Hadoop中正確地添加和移除節點


正確地添加和移除節點

添加節點

克隆

克隆一台全新的Linux(如有IP沖突,可右擊VMware右下角網絡圖標斷開連接)

打開/etc/hostname修改主機名

打開/etc/sysconfig/network-script/ifcfg-ens33修改IP

重啟

安裝

使用安裝包+hadoop-install.sh腳本快速安裝一個Hadoop節點

注意使用source hadoop-install.sh執行

配置NameNode

打開/etc/hosts添加新節點的IP和主機名

打開etc/hadoop/slaves添加新節點的主機名

打開hdfs-site.xml,設置節點平衡帶寬設置(默認值1M,下面設置為10M)

<property>

<name>dfs.datanode.balance.bandwidthPerSec</name>

<value>20971520</value>

</property>

同步DataNode配置

在所有DataNode節點上執行hadoop-pull.sh

注意修改腳本中的NameNode變量值!

啟動

在新節點上執行

hadoop-daemon.sh start datanode

平衡

讓各個DataNode中的數據均勻分布,

start-balancer.sh -threshold 5

-threshold是平衡閾值,默認值允許10%的差異,值越小越平衡,但花費的時間會越長

 

通過下面的命令也可以設置平衡時使用的網絡帶寬(字節/秒)

hdfs dfsadmin -setBalancerBandwidth20971520

在網絡帶寬受限的情況下,平衡速度較慢,需要耐心等待一段時間才能觀察到效果

 

平衡時先通過NameNode提供的元數據進行平衡規划,然后開啟多線程將數據從老節點移到新節點。

如果想查看平衡的過程,可以用下面的命令:

hdfs balancer -threshold 5

 

移除節點

如果節點中已經保存了數據,則從slaves中移除節點,重啟集群這種暴力手段就不適用了,如果暴力刪除則會造成數據丟失。為了解決生產環境中平穩安全地移除節點的問題,Hadoop提供了一個流程:

設置排除

namenode打開hdfs-site.xml,設置節點排除文件的位置(必須是絕對路徑)

<property>

<name>dfs.hosts.exclude</name>

<value>/usr/share/hadoop/etc/hadoop/excludes</value>

</property>

excludes文件中添加要排除的節點主機名,一行一個

 

更新節點配置

NameNode中執行下面命令,強制重新加載配置

hdfs dfsadmin -refreshNodes

Hadoop站點上很快就能看到Decommission正在進行,此時NameNode會檢查並將數據復制到其它節點上以恢復副本數(要移除的節點上的數據不會被刪除,如果數據比較敏感,要手動刪除它們)。通過命令也可以查看狀態:

hdfs dfsadmin -report


等狀態變成Decommissioned后就可以關閉這個節點了,可在要移除的節點上運行相應的關閉命令,如:

hadoop-daemon.sh stop datanode

幾分鍾后,節點將從Decommissioned進入Dead狀態。

 

更新集群配置

NameNodeexcludes文件及slaves文件、hosts文件中去掉已經移除的主機名

在所有DataNode上執行hadoop-pull.sh腳本,同步配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM