动态上下线datanode的方法

namenode 中 hdfs-site.xml 配置

dfs.hosts

/ddmap/hadoop-1.0.4/conf/hdfs_include

dfs.hosts.exclude

/ddmap/hadoop-1.0.4/conf/hdfs_exclude

dfs.hosts 所对应的文件中列出了所有可以连接到 namenode 的 datanode,

如果为空则所有的都可以连入。dfs.hosts.exclude 所对应的文件中列出了禁

止连接 namenode 的 datanode 节点。如果一个节点在这两个文件中都存在,则

不允许连入。

动态下线:

下线 datanode 步骤

1. 将要下线的机器加入到 dfs.hosts.exclude 指定的文件中(使用主

机名,ip 基本不靠谱),然后刷新配置 hadoop dfsadmin -refreshNodes。

2. 通过 hadoop dfsadmin -report 或者 web 界面,可以看到,该

datanode 状态转为 Decommission In Progress。

3. 当 decommission 进程完成数据移动,datanode 状态会转变为

Decommissioned,然后 datanode 会自动停止 datnode 进程。然后你可以看见

dead nodes 下多了一个你想要下线的节点。

4. 然后删除 include 和 exclude 中该节点的 hosts,重新刷新 hadoop

dfsadmin -refreshNodes。

5. 最后别忘了删除 slaves 中该节点的配置,防止下次整个集群重启

时,该节点不能通过 namenode 自动启动。

注意:当你下线一个 datanode 节点,有可能该节点长时间处于

Decommission In Progress 状态,一直不能转变为 Decommissioned。请你用

hadoop fsck /检查下是否有些块少于指定的块数,特别注意那些 mapreduce 的临时文件。将这些删除,并且从垃圾箱移除,该节点就可以顺利下线。这是我

解决该问题的办法。

动态上线:

上线一个节点的步骤

1. 保证将要上线的机器不存在于 dfs.hosts.exclude 所对应的的文件

中,并且存在于 dfs.hosts 所对应的文件中。

2. 在 namenode 上刷新配置:hadoop dfsadmin -refreshNodes。

3. 在要上线的节点重启 datanode,hadoop-daemon.sh start

datanode。

4. 通过 hadoop dfsadmin -report 或者 web 界面,可以看到,节点已

经上线。

5. 还是老话最后别忘了修改 slave

你可能感兴趣的:(大数据)