首页 > 解决方案 > 如何配置 YARN 以分配最少数量的容器?

问题描述

我在 YARN 集群上并行运行多个 Spark 作业。我发现 YARN 正在并行启动许多这样的作业,但只为驱动程序分配一个容器而没有执行程序。这意味着这些 Spark 作业实际上处于空闲状态,等待执行器加入,而通过将执行器分配给其他作业可以更好地利用这种处理能力。

我想将 YARN 配置为将至少两个容器(一个驱动程序 + 一个执行程序)分配给一个作业,如果不能将其保留在队列中。如何以这种方式配置 YARN?

(我在几乎所有默认设置的 AWS EMR 集群上运行。)

标签: apache-sparkhadoop-yarn

解决方案


如果您的 YARN 使用FairScheduler,您可以限制并发运行的应用程序数量,以及 AM 可以使用多少百分比的池(将其余部分留给执行程序):

maxRunningApps:限制队列中一次运行的应用程序数量

maxAMShare:限制队列公平份额中可用于运行应用程序主控的比例。此属性只能用于叶队列。例如,如果设置为 1.0f,则叶队列中的 AM 最多可以占用 100% 的内存和 CPU 公平份额。-1.0f 的值将禁用此功能,并且不会检查 amShare。默认值为 0.5f。


推荐阅读