hadoop集群负载不均衡及balance工具详解

来源:互联网 发布:小众品牌知乎 编辑:程序博客网 时间:2024/05/01 09:37

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

可能的原因:

1. 突然磁盘使用率变高而文件块数并没有很大的增加,极有可能是出现某个用户的作业产生大量大的文件,排查删除掉就课可以。注意将trash中的也要删除掉

2.也有可能是长期使用造成的,请查清楚每个节点的负载情况,进行排序,然后处理。


下付balance工具的一些说明,可以参考http://blog.csdn.net/azhao_dn/article/details/7741666

     1) hadoop balance工具的用法:

[html] view plaincopy
  1. To start:  
  2. bin/start-balancer.sh [-threshold <threshold>]  
  3. Example: bin/ start-balancer.sh  
  4. start the balancer with a default threshold of 10%  
  5. bin/ start-balancer.sh -threshold 5  
  6. start the balancer with a threshold of 5%  
  7.   
  8. To stop:  
  9. 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的文件块分布情况。以下为官方文档英文描述:

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

参考资料:

http://blog.csdn.net/azhao_dn/article/details/7741666


原创粉丝点击