在cdh 6.0.1
版本中,提交spark任务,发现yarn分配的container集中于几台节点,其它节点没有分配。这显然会导致个别机器负载过高,从而影响集群整个性能。
原因
yarn.scheduler.fair.assignmultiple
: Whether to allow multiple container assignments in one heartbeat. Defaults to false.
这个配置项决定了是否在一次心跳分配请求中分配多个containe
,在CDH中默认为true,在yarn原生中默认为false的。
yarn.scheduler.fair.dynamic.max.assign
为在assignmultiple
为true
时,是否动态决定一次分配多少,如果为true则一次最多分配该节点未分配资源的一半。
解决办法
设置cdh的配置yarn.scheduler.fair.assignmultiple
为false
,重启cdh生效,这样分配的资源就不会发生倾斜了,均匀分配到多个节点中。
文章评论