開始以前,應該把全部新增數據節點上的Hadoop環境都配置好(若是要直接複製已經存在節點的hadoop文件夾,應該刪掉裏面已經產生的集羣數據,好比tmp和data目錄,否則會出問題)node
Step1:關閉新加入數據節點的防火牆。web
Step2:在各個節點上把新增節點的hosts信息補充完整安全
Step3:在兩個NameNode上,打通向新增數據節點無密鑰SSH登陸的通道。oop
Step4:在兩個NameNode上的dfs.hosts指定的白名單文件中追加上全部新增的數據節點的hostname,須要更改下hdfs-site.xml,黑名單文件用於排除集羣中的節點spa
<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 -refreshNodescode
可經過hdfs dfsadmin -report或者master:50070 web端口查看當前集羣節點狀態xml
Step6:在兩個NameNode節點上,更改slaves文件,將要上線的數據節點hostname追加到slaves文件中。在slave上啓動datanode和nodemanager進程:進程
sbin/hadoop-daemon.sh start datanodehadoop
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進程,須要先關閉再從新啓動。