在namenode的/path/etc/hadoop目录下dfs.hosts.exclude文件
touch dfs.hosts.exclude
在这个文件中添加要退役的节点
slave2
在namenode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性
<property>
<name>dfs.hosts.exclude</name>
<value>/path/etc/hadoop/dfs.hosts.exclude</value>
</property>
刷新namenode
hdfs dfsadmin -refreshNodes
更新resourceManager节点
yarn rmadmin -refreshNodes
检查web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器.注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数才能退役
然后在对应节点停止datanode
注意datanode可能正在运行,要等他退出
看web中Datanode Information中对应node的Admin state
hadoop-daemon.sh stop datanode
停止nodemanager
yarn-daemon.sh stop nodemanager
从include文件中删除退役节点,再运行刷新节点的命令
- 从namenode的dfs.hosts文件中删除退役节点
- 刷新namenode和resourceManager
从namenode的slave文件中删除退役节点
如果数据不均衡可以用负载均衡命令
可以执行负载均衡下
start-balancer.sh
机器下线完毕,将他们从excludes文件中删除