下面我將盡可能的以通俗的語言講解hdfs的負載均衡技術。
hdfs架構天生支援資料均衡策略,舉個例子:
如果某個datanode節點上的空閒空間低於特定的臨界值,按照負載均衡技術系統將會自動地將資料從這個datanode移動到其他空閒的datanode。當hdfs負載不均衡時,需要對hdfs進行資料的負載均衡調整,即對各節點機器上資料的儲存分布進行調整,從而讓資料均勻的分布在各個datanode上,以均衡各種效能,防止「熱點」的發生:當對某個檔案的請求突然增加,那麼也可能啟動乙個計畫建立該檔案新的副本,並且同時重新平衡集群中的其他資料。
在hadoop的bin目錄下,包含乙個start-balancer.sh指令碼,通過執行這個工具,啟動hdfs資料均衡服務。啟動命令為:
./start-balancer.sh -threshold
引數:
-threshold
預設設定:10, 引數取值範圍:0-100dfs.balance.bandwidthpersec引數含義:判斷集群是否平衡的閾值。從理論上說,該引數值越小整個集群就越平衡。如果機器與機器之間磁碟使用率偏差小於10%,那麼我們就認為hdfs集群已經達到了平衡狀態。
預設設定:1048576(1m/s)舉個例子:引數含義:balancer執行時執行占用的頻寬
# 啟動資料均衡,閾值為5%
./start-balancer.sh - threshold 5
# 停止資料均衡
./stop-balancer.sh
同時我們還可以在hdfs-site.xml檔案中設定資料均衡占用的網路頻寬限制
>
>
dfs.balance.bandwidthpersecname
>
>
1048576value
>
property
>
下面簡要說明hdfs資料均衡的邏輯流程。
負載均衡服務rebalancing server從namenode中獲取所有的datanode情況,具體包括每乙個datanode磁碟使用情況,即為上圖中的流程1. get datanode report
rebalancing server計算哪些機器需要將資料移動,哪些機器可以接受移動的資料,以及從namenode中獲取需要移動資料的分布情況,即為上圖中的流程2.get partial blockmap。
rebalancing server計算出來可以將哪一台機器的block移動到另一台機器中去,即為上圖中的流程3.copy a block。
需要移動block的機器將資料移動到目標機器上,同時刪除自己機器上的block資料,見上圖中的流程4、5、6。
rebalancing server獲取本次資料移動的執行結果,並繼續執行這個過程,一直到沒有資料可以移動或hdfs集群已經達到平衡的標準為止,即為上圖中的流程7.confirm copy。
HDFS負載均衡
hdfs負載平衡 hdfs的資料可能並不總是被均勻的置於所有的datanode中,最常見的原因是向乙個已經存在的集群新增乙個新的節點。當放置新的塊時 塊 乙個檔案的資料會被儲存為一系列的塊 namenode 在選擇datanode節點儲存這些塊之前會考慮多方面引數。一些注意事項如下 策略保證乙個塊的...
負載均衡技術之負載均衡器簡介
負載均衡器可以根據實際的響應時間制定優先順序交付決策,從而實現高效能 智慧型化流量管理,達到最佳的伺服器群效能。採用第七層應用控制還可以減少通訊高峰期的錯誤訊息,因為差錯控制和流量管理技術可以偵測到一些錯誤資訊,並透明地將會話重定向到另乙個伺服器,使使用者順利地進行使用。例如,伺服器a不可用或者資料...
負載均衡技術之負載均衡器簡介
負載均衡器可以根據實際的響應時間制定優先順序交付決策,從而實現高效能 智慧型化流量管理,達到最佳的伺服器群效能。採用第七層應用控制還可以減少通訊高峰期的錯誤訊息,因為差錯控制和流量管理技術可以偵測到一些錯誤資訊,並透明地將會話重定向到另乙個伺服器,使使用者順利地進行使用。例如,伺服器a不可用或者資料...