正確地添加和移除節點
添加節點
克隆
克隆一台全新的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狀態。
更新集群配置
從NameNode的excludes文件及slaves文件、hosts文件中去掉已經移除的主機名
在所有DataNode上執行hadoop-pull.sh腳本,同步配置。