我有一個擁有8臺機器並且所有8臺機器都是數據節點的Hadoop集羣。 在一臺機器上運行的程序(比如機器A)會持續在HDFS中創建序列文件(每個文件大約1GB)。HADOOP HDFS不平衡問題
下面是問題:所有8臺機器都是相同的硬件,並具有相同的容量。當其他機器的HDFS磁盤剩餘空間仍有50%左右時,機器A只剩下5%。 我檢查了塊信息,發現幾乎每個塊在機器A上都有一個複製品。
有沒有什麼辦法來平衡複製品? 謝謝。
我有一個擁有8臺機器並且所有8臺機器都是數據節點的Hadoop集羣。 在一臺機器上運行的程序(比如機器A)會持續在HDFS中創建序列文件(每個文件大約1GB)。HADOOP HDFS不平衡問題
下面是問題:所有8臺機器都是相同的硬件,並具有相同的容量。當其他機器的HDFS磁盤剩餘空間仍有50%左右時,機器A只剩下5%。 我檢查了塊信息,發現幾乎每個塊在機器A上都有一個複製品。
有沒有什麼辦法來平衡複製品? 謝謝。
這是默認的放置策略。它適用於典型的M/R模式,每個HDFS節點也是一個計算節點,寫入機器是均勻分佈的。如果你不喜歡它,那麼有HDFS-385 Design a pluggable interface to place replicas of blocks in HDFS。您需要編寫一個實現BlockPlacementPolicy
接口的類,然後將此類設置爲hdfs-site.xml
中的dfs.block.replicator.classname
。
有一種方法。你可以使用hadoop命令行平衡器工具。 HDFS數據可能並不總是統一放置在數據節點上。要將HDFS數據均勻地分佈到集羣中的DataNode上,可以使用此功能。
hadoop balancer [-threshold <threshold>]
其中,閾值是磁盤容量
詳見以下鏈接百分比: