HDFS Block负载平衡器:Balancer

1. 背景

HDFS数据可能并不总是在DataNode之间均匀分布。一个常见的原因是向现有群集中添加了新的DataNode。HDFS提供了一个Balancer程序,分析block放置信息并且在整个DataNode节点之间平衡数据,直到被视为平衡为止。

所谓的平衡指的是每个DataNode的利用率(节点上已用空间与节点总容量之比)与集群的利用率(集群上已用空间与集群总容量的比)相差不超过给定阈值百分比。 平衡器无法在单个DataNode上的各个卷之间进行平衡。
平衡前和平衡后对比图

2 . 命令行配置和运行

在这里插入图片描述

-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

2.1 设置平衡数据传输带宽

命令:**hdfs dfsadmin -setBalancerBandwidth  newbandwidth**

其中newbandwidth是每个DataNode在平衡操作期间可以使用的最大网络带宽量,以每秒字节数为单位。

比如:hdfs dfsadmin -setBalancerBandwidth 104857600 

2.2 默认运行balancer

命令:hdfs balancer

此时将会以默认参数进行数据块的平衡操作。

2.3 修改阈值运行balancer

命令:hdfs balancer -threshold 5

ncer

命令:hdfs balancer -threshold 5

Balancer将以阈值5%运行(默认值10%),这意味着程序将确保每个DataNode上的磁盘使用量与群集中的总体使用量相差不超过5%。例如,如果集群中所有DataNode的总体使用率是集群磁盘总存储容量的40%,则程序将确保每个DataNode的磁盘使用率在该DataNode磁盘存储容量的35%至45%之间。

猜你喜欢

转载自blog.csdn.net/qq_40585384/article/details/121802425