最近需要将HDFS集群进行缩减,datanode由8台减到3台。google了一下,觉decommission方式最稳妥,于是使用该方法进行操作。
前提条件:
namenode的hdfs-site.xml 里有如下配置项
<property>
<name>dfs.hosts</name>
<value>/data/hadoop/etc/hadoop/slaves</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/data/hadoop/etc/hadoop/dfs_exclude</value>
</property>
dfs.hosts是允许接入的机器列表,如果没有配置的话,则任何节点可以接入。dfs.hosts.exclude是打算下线的机器列表。
下线节点很简单。
首先在dfs.hosts.exclude的文件里填写想要下线的机器的IP/hostname,然后在namenode上运行
hadoop dfsadmin -refreshNodes
打开namode监控UI,就可以看到Decommissioning Nodes 的数量增加,同时Live Nodes页面里,想要下线的机器状态变成了 Decommission In Progress。
此时decommissioning的机器上的数据块会被cop