Hadoop集群添加删除节点有两种方式:静态和动态
本篇中默认新添加的节点已经配置好免密登陆等其他相关的基础设置
一、静态方式
静态方式需要停止NameNode
- 1.停止namenode
- 2.修改slaves文件,并更新到各个节点
- 3.启动namenode
- 4.执行hadoop balance命令。(此项为balance集群使用,如果只是添加节点,则此步骤不需要)
二、动态方式
- 1.首先配置主节点的hdfs-site.xml
添加允许和拒绝加入集群的节点列表(如果允许的列表为空默认都允许连接,拒绝的列表为空则代表没有节点拒绝连接集群。拒绝列表的优先级大于允许的优先级)
- 2、修改slaves文件,添加需要增加的节点host或者ip,并将其更新到各个节点
- 3、在datanode中启动执行启动datanode命令。命令:sh hadoop-daemon.sh start datanode
- 4、在主节点刷新。hdfs dfsadmin -refreshNodes
- 5、可以通过web界面查看节点添加情况。或使用命令:sh hadoop dfsadmin -report
- 6、执行hadoop balance命令。(此项为balance集群使用,如果只是添加节点,则此步骤不需要)
三、删除节点
- 1、在主节点中配置拒绝连接的节点列表datanode-deny-list,将删除的节点名添加在列表中
vi /home/hadoop/hadoop2.7/con/datanode-denylist
- 2、在主节点刷新
hdfs dfsadmin -refreshNodes - 3、查看节点状态(可以看到节点的状态变成了Decommissioned,过一段时间后变成Died)
hdfs dfsadmin -report - 4、在删除的节点上关闭进程
yarn-daemon.sh stop nodemanager
hadoop-daemon.sh stop datanode
四、start-balancer.sh说明
start-balancer.sh可以执行-threshold参数。
-threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。
dfs.balance.bandwidthPerSec 默认设置:1048576(1 M/S),参数含义:设置balance工具在运行中所能占用的带宽,设置的过大可能会造成mapred运行缓慢。
需要注意的地方是,由于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。
启动: bin/ start-balancer.sh 10
停止:bin/ stop-balancer.sh