hadoop移除节点的优雅方式
step 1:使用hdfs-site.xml的配置项,排除节点。
<property>
<name>dfs.hosts.exclude</name>
<value>/your_path/excludes</value>
</property>
在excludes文件中添加要排除的节点主机名,一行一个
step 2:刷新datanode
hdfs dfsadmin -refreshNodes
hdfs dfsadmin -report
在Hadoop站点上很快就能看到Decommission正在进行,此时NameNode会检查并将数据复制到其它节点上以恢复副本数(要移除的节点上的数据不会被删除,如果数据比较敏感,要手动删除它们)。通过命令也可以查看状态。
step 3:等状态变成Decommissioned后就可以关闭这个节点了,可在要移除的节点上运行相应的关闭命令。
hadoop-daemon.sh stop datanode
几分钟后,节点将从Decommissioned进入Dead状态。
step 4:从NameNode的excludes文件及slaves文件、hosts文件中去掉已经移除的主机名。