HDFS數據可能并不總是在DataNode之間均勻分布。一個常見的原因是向現有群集中添加了新的DataNode。HDFS提供了一個Balancer程序,分析block放置信息并且在整個DataNode節點之間平衡數據,直到被視為平衡為止。
所謂的平衡指的是每個DataNode的利用率(節點上已用空間與節點總容量之比)與集群的利用率(集群上已用空間與集群總容量的比)相差不超過給定阈值百分比。 平衡器無法在單個DataNode上的各個卷之間進行平衡。
平衡前和平衡後對比圖
命令行配置和運行
-threshold 10 //集群平衡的條件,datanode間磁盤使用率相差阈值,區間選擇:0~100
-policy datanode //平衡策略,默認為datanode, 如果datanode平衡,則集群已平衡。
-exclude -f /tmp/ip1.txt //默認為空,指定該部分ip不參與balance, -f:指定輸入為文件
-include -f /tmp/ip2.txt //默認為空,隻允許該部分ip參與balance,-f:指定輸入為文件
-idleiterations 5 //叠代 5
設置平衡數據傳輸帶寬命令:hdfs dfsadmin -setBalancerbandwidth newbandwidth
其中newbandwidth是每個DataNode在平衡操作期間可以使用的最大網絡帶寬量,以每秒字節數為單位。
比如:hdfs dfsadmin -setBalancerBandwidth 104857600
默認運行balancer命令:hdfs balancer
此時将會以默認參數進行數據塊的平衡操作。
修改阈值運行balancer命令:hdfs balancer -threshold 5
Balancer将以阈值5%運行(默認值10%),這意味着程序将确保每個DataNode上的磁盤使用量與群集中的總體使用量相差不超過5%。例如,如果集群中所有DataNode的總體使用率是集群磁盤總存儲容量的40%,則程序将确保每個DataNode的磁盤使用率在該DataNode磁盤存儲容量的35%至45%之間。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!