hdfs disk balancer 磁碟均衡器

huan1993發表於2023-04-06

1、背景

在我們的hadoop叢集執行一段過程中,由於多種原因,資料在DataNade的磁碟之間的分佈可能是不均勻。比如: 我們剛剛給某個DataNode新增加了一塊磁碟或者叢集上存在大批次的write & deltete操作等燈。那麼有沒有一種工具,能夠使單個DataNode中的多個磁碟的資料均衡呢?藉助Hadoop提供的Diskbalancer命令列工具可以實現。

2、hdfs balancer和 hdfs disk balancer有何不同?

hdfs balancer: 是為了叢集中DataNode的資料均衡,即針對多個DataNode的。
hdfs balancer

hdfs disk balancer: 是為了使單臺DataNode中的多個磁碟中的資料均衡。
hdfs disk balancer

注意: 目前DiskBalancer不支援跨儲存介質(SSDDISK等)的資料轉移,所以磁碟的均衡都是要求在一個storageType下的。因為hdfs中存在異構儲存

3、操作

3.1 生成計劃

[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -plan hadoop01 -out hadoop01-plan.json

-plan: 後面接的是主機名。
-out: 指定計劃檔案的輸出位置。
生成計劃

3.2 執行計劃

[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -execute hadoop01-plan.json

執行計劃

3.3 查詢計劃

[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -query hadoop01

-query 後面跟的是 主機名

查詢計劃

3.4 取消計劃

[hadoopdeploy@hadoop01 ~]$ hdfs diskbalancer -cancel hadoop01-plan.json

取消計劃

4、和disk balancer相關的配置

配置描述
dfs.disk.balancer.enabled此引數控制是否為叢集啟用diskbalancer。如果未啟用,任何執行命令都將被DataNode拒絕。預設值為true。
dfs.disk.balancer.max.disk.throughputInMBperSec這控制了diskbalancer在複製資料時消耗的最大磁碟頻寬。如果指定了10MB之類的值,則diskbalancer平均只會複製10MB/S。預設值為10MB/S。
dfs.disk.balancer.max.disk.errors設定能夠容忍的在指定的移動過程中出現的最大錯誤次數,超過此閾值則失敗。例如,如果一個計劃有3對磁碟要在其中複製,並且第一個磁碟集遇到超過5個錯誤,那麼我們放棄第一個副本並啟動計劃中的第二個副本。最大錯誤的預設值設定為5。
dfs.disk.balancer.block.tolerance.percent設定磁碟之間進行資料均衡操作時,各個磁碟的資料儲存量與理想狀態之間的差異閾值。取值範圍[1-100],預設為10。例如,各個磁碟的理想資料儲存量為100 GB,此引數設定為10。那麼,當目標磁碟的資料儲存量達到90 GB時,則認為該磁碟的儲存狀態就已經達到預期。
dfs.disk.balancer.plan.threshold.percent設定在磁碟資料均衡中可容忍的兩磁碟之間的資料密度域值差,取值範圍[1-100],預設為10。如果任意兩個磁碟資料密度差值的絕對值超過了閾值,則說明需要對該的磁碟進行資料均衡。例如,如果一個2盤節點上的總資料為100 GB,那麼磁碟均衡器計算每個磁碟上的期望值為50 GB。如果容差為10%,則單個磁碟上的資料需要大於60 GB(50 GB + 10%容差值),DiskBalancer才能開始工作。
dfs.disk.balancer.plan.valid.interval磁碟平衡器計劃有效的最大時間。支援以下字尾(不區分大小寫):ms(milis)、s(sec)、m(min)、h(h)、d(day)以指定時間(例如2s、2m、1h等)。如果未指定字尾,則假定為毫秒。預設值為1d

5、額外知識點

5.1 新的block儲存到那個磁碟(卷)中

當資料寫入新的block時,DataNode會根據策略選擇不同的磁碟來儲存。

迴圈策略: 預設策略,將新的塊均勻的分佈在可用的磁碟上,可能造成資料傾斜。

可用空間策略: 選擇更多可用空間(按百分比)的磁碟。可能造成在某段時間內,某個磁碟的IO壓力變大。

5.2 磁碟資料密度度量標準

磁碟資料密度度量標準
上圖來自 https://www.bilibili.com/video/BV11N411d7Zh/?p=81

6、參考文件

1、https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSDiskbalancer.html
2、https://help.aliyun.com/document_detail/467585.html
3、https://www.bilibili.com/video/BV11N411d7Zh/?p=81

相關文章