本套技術專欄是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。QQ郵箱地址:1120746959@qq.com,如有任何學術交流,可隨時聯絡。
1 節點擴容
-
配置/etc/hosts新增新節點的IP和主機名
-
配置etc/hadoop/slaves新增新節點的主機名
-
配置hdfs-site.xml,設定節點平衡頻寬設定(預設值1M,下面設定為10M)
<property> <name>dfs.datanode.balance.bandwidthPerSec</name> <value>20971520</value> </property> 複製程式碼
-
在新節點上執行datanode
hadoop-daemon.sh start datanode 複製程式碼
-
資料平衡,讓各個DataNode中的資料均勻分佈,threshold是平衡閾值,預設值允許10%的差異,值越小越平衡,但花費的時間會越長,平衡時先通過NameNode提供的後設資料進行平衡規劃,然後開啟多執行緒將資料從老節點移到新節點。
start-balancer.sh -threshold 5 複製程式碼
-
設定平衡時使用的網路頻寬(位元組/秒),在網路頻寬受限的情況下,平衡速度較慢,需要耐心等待一段時間才能觀察到效果
hdfs dfsadmin -setBalancerBandwidth 20971520 複製程式碼
2 節點縮容
-
在namenode中開啟hdfs-site.xml,設定節點排除檔案的位置(必須是絕對路徑),在excludes檔案中新增要排除的節點主機名,一行一個
<property> <name>dfs.hosts.exclude</name> <value>/usr/local/hadoop/etc/hadoop/excludes</value> </property> 複製程式碼
-
更新節點配置,然後在Hadoop站點上很快就能看到Decommission正在進行,此時NameNode會檢查並將資料複製到其它節點上以恢復副本數(要移除的節點上的資料不會被刪除,如果資料比較敏感,要手動刪除它們)
NameNode中執行下面命令,強制重新載入配置:
hdfs dfsadmin -refreshNodes 複製程式碼
-
檢視資源彙報情況
hdfs dfsadmin -report 複製程式碼
-
等狀態變成Decommissioned後就可以關閉這個節點了,可在要移除的節點上執行相應的關閉命令,幾分鐘後,節點將從Decommissioned進入Dead狀態。
hadoop-daemon.sh stop datanode 複製程式碼
-
更新叢集配置(所有節點同步)
NameNode的excludes檔案及slaves檔案、hosts檔案中去掉已經移除的主機名。 複製程式碼
4 自動資料轉移,預設死亡時間
datenode 與namenode 之間的通訊是通過心跳的機制,當超過一定的時間則預設為datanode 為死亡 ,預設的死亡的事件為:10分鐘+30秒 ,可同一下配置檔案配置:
hdfs-site.xml:
<property>
<name>heartbeat.recheck.interval</name>
<value>300</value>
<description>設定的大小</description>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>5</value>
<description>預設值</description>
</property>
複製程式碼
總結
最近需要進行叢集資源規劃,不得進行Hadoop伸縮節點。
秦凱新 於深圳