hadoop集群动态添加删除节点
动态添加,在不重启集群的情况下添加节点,对集群进行扩容
一.添加节点
1.配置新节点与namenode之间的ssh免密登陆
2.在主节点的 hosts添加主机名称,并且把该文件复制到集群中的其他节点上。
3.在Namenode节点的slaves文件中添加新节点的主机名或ip(用于下次重启的时候使用)
4.在新节点中启动进程:
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh start nodemanager
2.在主节点刷新
hdfs dfsadmin -refreshNodes
3.查看节点状态
hdfs dfsadmin -report
5.在datanode中启动:start-balancer.sh
均衡当前的hdfs块
二.删除节点
-
在主节点的配置文件目录里新建datanode-deny.list文件,并添加需要退役的主机名
-
在hdfs-site.xml文件中配置:
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/src/hadoop/etc/hadoop/datanode-deny.list</value>
</property>
-
在主节点执行刷新命令:
hdfs dfsadmin -refreshNodes
-
通过
hdfs dfsadmin -report
查看该节点状态(可以看到节点的状态变成了Decommissioned,过一段时间后变成Died) -
节点退役完成,停止该节点进程
-
在datanode-deny.list 中删掉退役的节点
-
在slaves文件中删除掉新节点
-
负载均衡
start-balancer.sh
注意:
在删除节点时可能会出现 datanode长时间处于 Decommissioned 状态
因为hdfs datanode退役的理论是,使一个datanode退役,hdfs会把它标志为退役状态,但并不会立即失效,不能立即删除,要等到它里面的block都复制出来的时候,才可以把它删除。
块的复制因子理论是 : 同一个节点不能出现两个相同block复制版本。 改变了复制因子,
hdfs会有一定的策略,删除或者添加块的复制版本,所以会重新整理一遍!
如果副本数比datanode多也会导致一直处在Decommissioning的状态,因为退役的时候副本数没有改变。所以要在退役的时候增加新的节点,只是做退役的话,因为不满足最小副本数要求,一直会停留在退役中,如果想较快的退役的话需要减少副本数。
如有错误,欢迎私信纠正,谢谢支持!