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