hadoop集群在运行一段时间后,总是会出现某台机器的磁盘使用率特别高,有的使用率特别低,针对这种情况,hadoop提供了balancer工具调整磁盘负载
使用命令:start-balancer.sh -threshold 1
影响hadoop balance工具的几个参数:
-threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。
dfs.balance.bandwidthPerSec 默认设置:1048576(1 M/S),参数含义:设置balance工具在运行中所能占用的带宽,设置的过大可能会造成mapred运行缓慢
由于需要经常执行这个,我们可以把它加入到linux的定时任务中,每天或每几个小时执行一次
创建文件hdfs_balancer_cron.cron
# 每隔6小时平衡hdfs数据,creator:huqiang
* */6 * * * hdfs_balancer.sh
创建hdfs_balancer.sh
#平衡hdfs占用空间
hdfs dfsadmin -setBalancerBandwidth 67108864
sleep 3s
start-balancer.sh -threshold 1
执行 crontab hdfs_balancer_cron.cron