namenode 中 hdfs-site.xml 配置
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