hdfs負載平衡
hdfs的資料可能並不總是被均勻的置於所有的datanode中,最常見的原因是向乙個已經存在的集群新增乙個新的節點。
當放置新的塊時(塊:乙個檔案的資料會被儲存為一系列的塊)。namenode 在選擇datanode節點儲存這些塊之前會考慮多方面引數。一些注意事項如下:
策略保證乙個塊的其中之乙個副本在同乙個節點(這個節點是塊寫的節點)
需要將乙個塊的副本分配到不同的機架上 ,這樣可以確保集群丟失整個機架也沒有影響
眾多副本中的其中之一通常放在檔案寫入節點的同乙個機架上,這樣可以減少跨機架的網路i/o
hdfs的資料均勻的分步到乙個集群的所有節點中
由於多個相互競爭的考慮,整個datanode資料可能不是均勻放置。hdfs為管理員提供了乙個工具,分析整個datanode的塊 位置和平衡資料。
hadoop hdfs資料負載均衡原理
資料均衡過程的核心是乙個資料均衡演算法,該資料均衡演算法將不斷迭代資料均衡邏輯,直至集群內資料均衡為止。該資料均衡演算法每次迭代的邏輯如下:
步驟分析如下:
資料均衡服務(rebalancing server)首先要求 namenode 生成 datanode 資料分布分析報告,獲取每個datanode磁碟使用情況
rebalancing server彙總需要移動的資料分布情況,計算具體資料塊遷移路線圖。資料塊遷移路線圖,確保網路內最短路徑
開始資料塊遷移任務,proxy source data node複製一塊需要移動資料塊
將複製的資料塊複製到目標datanode上
刪除原始資料塊
目標datanode向proxy source data node確認該資料塊遷移完成
proxy source data node向rebalancing server確認本次資料塊遷移完成。然後繼續執行這個過程,直至集群達到資料均衡標準
詳細的datanode歸類策略
在第2步中,hdfs會把當前的datanode節點,根據閾值的設定情況劃分到over、above、below、under四個組中。在移動資料塊的時候,over組、above組中的塊向below組、under組移動。四個組定義如下:
over組:此組中的datanode的均滿足
datanode_usedspace_percent > cluster_usedspace_percent + threshold
above組:此組中的datanode的均滿足
cluster_usedspace_percent + threshold > datanode_ usedspace _percent > cluster_usedspace_percent
below組:此組中的datanode的均滿足
cluster_usedspace_percent > datanode_ usedspace_percent > cluster_ usedspace_percent – threshold
under組:此組中的datanode的均滿足
cluster_usedspace_percent – threshold > datanode_usedspace_percent
hadoop hdfs 資料自動平衡指令碼使用方法
在hadoop中,包含乙個start-balancer.sh指令碼,通過執行這個工具,啟動hdfs資料均衡服務。該工具可以做到熱插拔,即無須重啟計算機和 hadoop 服務。$hadoop_home/sbin/
目錄下的start−balancer.sh
指令碼就是該任務的啟動指令碼。啟動命令為:$hadoop_home/sbin/start-balancer.sh
檢視shell指令碼發現其實就是啟動了如下這個命令
$hadoop_home/bin/hdfs balancer
more $hadoop_home/sbin/start-balancer
.sh...
.省略...
."$hadoop_prefix"/sbin/hadoop-daemon
.sh --config $hadoop_conf_dir
--script "$bin"/hdfs start balancer $@
引數如下
usage: hdfs balancer
[-policy ] the balancing policy: datanode or blockpool
[-threshold ] percentage of disk capacity
[-exclude [-f file> | ]] excludes the specified datanodes.
[-include [-f file> | ]] includes only the specified datanodes.
[-idleiterations ] number of consecutive idle iterations (-1
for infinite) before exit.
常用引數是-threshold 指定閥值
注: 在實際操作中發現 預設的負載均衡複製block的速度很慢 在集群壓力較小時可考慮調整如下配置提高速度
hdfs-site.xml
dfs.balance.bandwidthpersecname>
1048576
specifies the maximum bandwidth that each datanode can utilize for
the balancing purpose in term of
thenumber
of bytes per second.
property>
預設1048576 是 1m/s
HDFS技術之負載均衡(六)
下面我將盡可能的以通俗的語言講解hdfs的負載均衡技術。hdfs架構天生支援資料均衡策略,舉個例子 如果某個datanode節點上的空閒空間低於特定的臨界值,按照負載均衡技術系統將會自動地將資料從這個datanode移動到其他空閒的datanode。當對某個檔案的請求突然增加,那麼也可能啟動乙個計畫...
nginx 負載均衡 Nginx負載均衡策略
nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...
軟負載均衡和F5負載均衡(硬負載均衡)區別
分割線,以下是原文內容 負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件 網路裝置 和伺服器 的頻寬 增加 吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web 伺服器 ftp...