spark on yarn container分配极端倾斜

Posted zz-ksw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark on yarn container分配极端倾斜相关的知识,希望对你有一定的参考价值。

环境:CDH5.13.3  spark2.3

在提交任务之后,发现executor运行少量几台nodemanager,而其他nodemanager没有executor分配。

通过spark-shell模拟如下:

第一次尝试分配6个exeutor,具体如下

spark2-shell --driver-memory 1G --executor-memory 2G --num-executors 6 --executor-cores 3

 

技术图片

第二次尝试分配20个executor,具体如下

spark2-shell --driver-memory 1G --executor-memory 2G --num-executors 20 --executor-cores 3

 

 

 

技术图片

 

环境调度策略为公平调度,即FairScheduler,而这种情况是由公平调度中的一个参数有关:

<property>
<name>yarn.scheduler.fair.assignmultiple</name>
<value>true</value>
<discription>whether to allow multiple container assignments in one heratbeat defaults to false</discription>
</property>
在一次心跳请求中,是否分配多个container,CDH5.13.3默认设置为true。原生hadoop默认是false

<property>
<name>yarn.scheduler.fair.max.assign</name>
<value>-1</value>
</property>
如果上面设置的允许一次分配多个container,那么最多分配多少个,默认无限制。根据实际资源情况


将yarn.scheduler.fair.assignmultiple设置为false,再测试如下:

spark2-shell --driver-memory 1G --executor-memory 2G --num-executors 6 --executor-cores 3

 

技术图片

 

如果在生产环境下,spark任务的executor数量和内存都相对要高很多,所以这种情况会相对有所缓解,具体根据实际情况确定是否需要调整。

以上是关于spark on yarn container分配极端倾斜的主要内容,如果未能解决你的问题,请参考以下文章

Spark on Yarn 为啥出现内存超界container被kill

Spark记录-Spark On YARN内存分配(转载)

Spark On YARN内存分配

Spark on Yarn

Spark On YARN内存和CPU分配

Spark On Yarn的两种模式yarn-cluster和yarn-client深度剖析