2019独角兽企业重金招聘Python工程师标准>>>
开始之前,应该把所有新增数据节点上的Hadoop环境都配置好(如果要直接复制已经存在节点的hadoop文件夹,应该删掉里面已经产生的集群数据,比如tmp和data目录,不然会出问题)
Step1:关闭新加入数据节点的防火墙。
Step2:在各个节点上把新增节点的hosts信息补充完整
Step3:在两个NameNode上,打通向新增数据节点无密钥SSH登录的通道。
Step4:在两个NameNode上的dfs.hosts指定的白名单文件中追加上所有新增的数据节点的hostname,需要更改下hdfs-site.xml,黑名单文件用于排除集群中的节点
<property><name>dfs.hosts</name><value>/usr/hadoop/etc/hadoop/datanode-allow.list</value></property><property><name>dfs.hosts.exclude</name><value>/usr/hadoop/etc/hadoop/datanode-deny.list</value></property>
Step5:在namenode上执行如下刷新命令:hdfs dfsadmin -refreshNodes
可通过hdfs dfsadmin -report或者master:50070 web端口查看当前集群节点状态
Step6:在两个NameNode节点上,更改slaves文件,将要上线的数据节点hostname追加到slaves文件中。在slave上启动datanode和nodemanager进程:
sbin/hadoop-daemon.sh start datanode
sbin/yarn-daemon.sh start nodemanager
用新增节点用jps查看进程,可在master节点通过yarn node -list查看集群情况
Step7:均衡block(非必须,根据集群情况设定)
./bin/start-balancer.sh
1) 如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率
2) 设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长
hdfs balancer -threshold 5
3) 设置balance的带宽,默认只有1M/s
hdfs dfsadmin -setBalancerBandwidth 67108864
数据节点的删除和上述步骤类似,只不过在master1上修改datanode-allow.list和datanode-deny.list,还有slaves文件并且同步到master2上。整个操作的过程中都不涉及集群的重启~等待刷新的操作结束后,需要下架的机器就可以安全的关闭了。
[root@master hadoop]# ./bin/ hdfs dfsadmin -refreshNodes
[root@master hadoop]# ./bin/ hadoop dfsadmin -report
可以查看到现在集群上连接的节点
正在执行Decommission,会显示:
Decommission Status : Decommission in progress 执行完毕后,会显示:
Decommission Status : Decommissioned
重新加入各个删除的节点
1,在master的datanode-deny.list删除相应机器
2,在master上刷新节点配置情况:
hadoop dfsadmin -refreshNodes
3,在slave上重启tasktracker进程:
hadoop-daemon.sh start datanode
PS:如果之前没有关闭该slave上的datanode进程,需要先关闭再重新启动。