问答 百科手机端

hadoop集群动态添加删除节点

2023-03-15 15:58

动态添加,在不重启集群的情况下添加节点,对集群进行扩容

一.添加节点

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块

二.删除节点

  1. 在主节点的配置文件目录里新建datanode-deny.list文件,并添加需要退役的主机名

  2. 在hdfs-site.xml文件中配置:

<property>
    <name>dfs.hosts.exclude</name>  
    <value>/usr/local/src/hadoop/etc/hadoop/datanode-deny.list</value>    
</property>
  1. 在主节点执行刷新命令:hdfs dfsadmin -refreshNodes

  2. 通过 hdfs dfsadmin -report 查看该节点状态(可以看到节点的状态变成了Decommissioned,过一段时间后变成Died)

  3. 节点退役完成,停止该节点进程

  4. 在datanode-deny.list 中删掉退役的节点

  5. 在slaves文件中删除掉新节点

  6. 负载均衡 start-balancer.sh

注意:

在删除节点时可能会出现 datanode长时间处于 Decommissioned 状态

因为hdfs datanode退役的理论是,使一个datanode退役,hdfs会把它标志为退役状态,但并不会立即失效,不能立即删除,要等到它里面的block都复制出来的时候,才可以把它删除。

块的复制因子理论是 : 同一个节点不能出现两个相同block复制版本。 改变了复制因子,
hdfs会有一定的策略,删除或者添加块的复制版本,所以会重新整理一遍!

如果副本数比datanode多也会导致一直处在Decommissioning的状态,因为退役的时候副本数没有改变。所以要在退役的时候增加新的节点,只是做退役的话,因为不满足最小副本数要求,一直会停留在退役中,如果想较快的退役的话需要减少副本数。

如有错误,欢迎私信纠正,谢谢支持!

热门