hadoop集群balance工具详解

在线上的hadoop集群运维过程中,hadoop 的balance工具通常用于平衡hadoop集群中各datanode中的文件块分布,以避免出现部分datanode磁盘占用率高的问题(这问题也很有可能导致该节点CPU使用率较其他服务器高)。

     1) hadoop balance工具的用法:

To start:
bin/start-balancer.sh [-threshold <threshold>]
Example: bin/ start-balancer.sh
start the balancer with a default threshold of 10%
bin/ start-balancer.sh -threshold 5
start the balancer with a threshold of 5%

To stop:
bin/ stop-balancer.sh

      2)影响hadoop balance工具的几个参数:

             -threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。

            dfs.balance.bandwidthPerSec  默认设置:1048576(1 M/S),参数含义:设置balance工具在运行中所能占用的带宽,设置的过大可能会造成mapred运行缓慢

     3)hadoop balance工具其他特点:

           balance工具在运行过程中,迭代的将文件块从高使用率的datanode移动到低使用率的datanode上,每一个迭代过程中移动的数据量不超过下面两个值的较小者:10G或者指定阀值*容量,且每次迭代不超过20分钟。每次迭代结束后,balance工具将更新该datanode的文件块分布情况。以下为官方文档英文描述:

The  tool moves  blocks from  highly utilized datanodes  to  poorly utilized datanodes
iteratively. In each iteration a datanode moves or receives no more than the lesser of 10G
bytes or the threshold fraction of its capacity. Each iteration runs no more than 20
minutes. At the end of each iteration, the balancer obtains updated datanodes information
from the namenode.





在要balance的slave执行:

start-balancer.sh -threshold 10%

或 ./hadoop balancer -threshold 10





由于hadoop集群的机器磁盘容量大小不等,造成磁盘使用率不同,有的使用了10%,而有的已经100%,这个对整个系统的运行是有问题的。

暂时还没有找到控制磁盘使用率的参数,可以通过hadoop命令行来手动调节磁盘的使用情况。

> hadoop balancer -Threshold 20

或者 sh $HADOOP_HOME/bin/start-balancer.sh –t 20%

参数20是比例参数,表示20%,也就是平各个DataNode直接磁盘使用率偏差在20%以内。

你可能感兴趣的:(hadoop)