cdh中yarn调度spark,container资源倾斜,container集中于一台或几台机器

410 阅读1分钟

image.png 在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生效,这样分配的资源就不会发生倾斜了,均匀分配到多个节点中。