多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
在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(退役中),说明数据节点正在复制块到其他节点 ![](https://box.kancloud.cn/f57e056268a5f03959986fc4ea16e373_618x59.png) 等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器.注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数才能退役 ![](https://box.kancloud.cn/83539cc9cf5f7c85fdeeef9c2f57d20f_578x63.png) 然后在对应节点停止datanode 注意datanode可能正在运行,要等他退出 看web中Datanode Information中对应node的Admin state ~~~ 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文件中删除