hadoop重啓太麻煩了,須要暫停當前全部的任務。因此動態的刪除和新增節點就很重要了。java
先說動態刪除節點:node
(配置爲可動態刪除節點,這個是要重啓的,之後須要動態刪除節點時,就不用重啓了。)進入hadoop目錄的etc/hadoop/目錄web
1.增長excludes文件,每行寫一個要刪除的節點的主機名負載均衡
2.在hdfs-site.xml中增長
oop
<property> <name>dfs.hosts.exclude</name> <value>/data/hadoop/etc/hadoop/excludes</value> </property>
3.在mapred-site.xml中增長測試
<property> <name>mapred.hosts.exclude</name> <value>/data/hadoop/etc/hadoop/excludes</value> <final>true</final> </property>
這樣,若是須要刪除某一節點,只需把該節點的主機名寫入excludes文件,而後執行(僅在namenode上修改文件,執行命令便可)spa
hadoop dfsadmin -refreshNodes
查看節點狀態hadoop dfsadmin -report或者web管理端頁面,能夠看到該節點是decomissioning狀態,等它變化爲decomissioned,就能夠把這個節點拿掉了。拿掉後,該節點上進程仍是都在的,直接kill便可。日誌
動態新增節點:code
由於我是把刪除的節點從新加上,因此環境之類的就不用配置了。直接使用原來的就行。xml
在節點上執行,/data/hadoop/etc/hadoop/是配置文件目錄,這是啓動datanode
hadoop-daemon.sh --config /data/hadoop/etc/hadoop/ --script hdfs start nodemanager
而後啓動nodemanager
yarn-daemons.sh --config /data/hadoop/etc/hadoop/ start nodemanager
這條命令是啓動了全部slave主機的nodemanager,因此執行中會報錯,其餘的主機已啓動。
我看有的帖子經過如下命令啓動:
hadoop-daemon.sh start datanode yarn-daemon.sh start nodemanager
個人啓動了,這兩個命令就不試了。朋友們測試後能夠告訴我哦~(已測試過了,成功,第二種啓動更合理)
而後,刪除前文中的excludes文件中該節點的主機名,執行刷新操做便可。
hadoop dfsadmin -refreshNodes
至此,能夠看到已經新增了該節點的datanode。
hadoop的數據的負載均衡:
執行如下命令,-threshold 5這個參數能夠不寫,默認是10
start-banlancer.sh -threshold 5
而後就能夠查看日誌了,在哪臺機器上執行該命令,日誌就在哪臺機器上。
tail -f /data/hadoop/logs/hadoop-hadoop-balancer-hostname.log
靜等均衡完畢!