介绍

因为hadoop集群是由很多普通的node服务器组成,服务器出现硬件或其他问题导致节点不能使用的情况时常发生,hadoop提供了live-dead-decomission机制,就是可以定义哪些节点是好的,哪些是坏的,哪些已经从nn上剔掉了,但rm或dn服务任然在跑的。

 

正文

Decommission node : test.node

 

1 先在50070端口看看要decom的节点是出于什么状态

https://nn.com:50070

或者登陆到nn上用命令查看

sudohadoop
hadoop dfsadmin -report | grep -A 3 $ip_of_decommistion_node


 


2. 登陆到rm或jt节点上修改mapred-exclude文件,把要decom的节点加到里面。

 

3. 在rm上或client上刷新节点,并看下live的节点数量

sudohadoop
hadoop job -list-active-trackers | wc -l
yarn rmadmin -refreshNodes
hadoop job -list-active-trackers | wc -l

 

4. 登陆到要decom的节点上,关掉nodemanager

svc -d /service/nodemanager
or 
stop-yarn.sh


 

5. 登陆到nn上修改hdfs-exclude文件,把要decom的节点加到里面。

 

6. 登陆到nn或client上刷新节点

sudohadoop
hadoop dfsadmin -refreshNodes


  

7. 停掉datanode service

svc -d /service/datanode
or
stop-dfs.sh


 

8 再到50070端口看看要decom的节点是出于什么状态

https://nn.com:50070

这时应该出于dead状态了,decommision对于hadoop1版本,可能要等很长时间,因为版本的bug,但如果用hadoop2的话就很快的,注意观察decomissioning中的状态,当under replicated blocks 的数量为0的时候,就说明这个node里面的所有blocks都已经被复制到其他node上了。