在namenode的/path/etc/hadoop目录下dfs.hosts.exclude文件

    1. touch dfs.hosts.exclude

    在这个文件中添加要退役的节点

    1. slave2

    在namenode的hdfs-site.xml配置文件中增加dfs.hosts.exclude属性

    1. <property>
    2. <name>dfs.hosts.exclude</name>
    3. <value>/path/etc/hadoop/dfs.hosts.exclude</value>
    4. </property>

    刷新namenode

    1. hdfs dfsadmin -refreshNodes

    更新resourceManager节点

    1. yarn rmadmin -refreshNodes

    检查web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点

    image.png

    等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器.注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数才能退役

    image.png

    然后在对应节点停止datanode

    注意datanode可能正在运行,要等他退出
    看web中Datanode Information中对应node的Admin state

    1. hadoop-daemon.sh stop datanode

    停止nodemanager

    yarn-daemon.sh stop nodemanager
    

    从include文件中删除退役节点,再运行刷新节点的命令

    1. 从namenode的dfs.hosts文件中删除退役节点
    2. 刷新namenode和resourceManager

    从namenode的slave文件中删除退役节点

    如果数据不均衡可以用负载均衡命令
    可以执行负载均衡下

    start-balancer.sh
    

    机器下线完毕,将他们从excludes文件中删除