默认情况下,hadoop 负载不均衡(任务数目不同),怎样让各个节点任务数目尽可能均衡呢?

默认情况下,hadoop yarn负载不均衡(任务数目不同),有的节点很多任务在跑,有的没有任务,怎样让各个节点任务数目尽可能均衡呢?显示全部

默认情况下,hadoop yarn负载不均衡(任务数目不同),有的节点很多任务在跑,有的没有任务,怎样让各个节点任务数目尽可能均衡呢?

收起
参与8

查看其它 1 个回答youki2008的回答

youki2008youki2008系统架构师DDT

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

可能的原因:

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

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

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

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.

参考资料:

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

互联网服务 · 2020-04-25
浏览1549

回答者

youki2008
系统架构师DDT
擅长领域: 服务器云计算数据库

youki2008 最近回答过的问题

回答状态

  • 发布时间:2020-04-25
  • 关注会员:3 人
  • 回答浏览:1549
  • X社区推广