Hadoop集群中banlancer用法简介

随着时间的推移,各个datanode上的块会分布得越来越不均衡。不均衡的Hadoop集群会降低MapReduce的本地性,导致部分 datanode 相对更为繁忙。我们应尽力避免出现这种情况。

均衡器(loadbalancer)程序是一个 Hadoop 守护进程,它将块从忙碌的 datanode 移到 相对空闲的 datanode,从而重新分配块。同进坚持复本放置策略,将复本分散到不同机架,以降低数据损失概率。它不断移动块,直到集群达到均衡,即每个 datanode 的使用率(该节点上已使用的空间与空间容量之间的比率)和集群的使用率(集群中已使用的空间与集群的空间容量之间的比率)非常接近,差距不超过给定的阀值(默认为10%)。可调用下面指令启动均衡器:

1
$path_to_hadoop/bin/start-balancer.sh -t 10%
  • -t 选项指定阈值,以判定集群是否均衡。这个标记是可选的;若不使用,默认阈值是10%。在任何时刻,集群中都只运行一个均衡器。

均衡器会一直运行,直到集群变均衡;之后,集群无法移动任何块,或与 namenode 失去联系。均衡器在标准日志目录中创建一个日志文件 ,记录每次重新分配过程(第次运行记录一行)。

为了降低集群负何、避免干扰其它用户,均衡器被设计为在后台运行。在不同节点之间复制数据的带宽也是受限的。默认值是很小的 1MB/s,可以通过 hdfs-site.xml 文件中 df.balance.bandwidthPerSec 属性指定(单位是字节)。