我正在YARN集群上并行运行一些Spark作业。 我发现YARN并行启动了一些作业,但只为驱动分配了一个容器,而没有执行器。 这意味着这些Spark作业实际上是闲置的,等待执行者的加入,而这些处理能力可以通过为其他作业分配执行者来更好地利用。
我想配置YARN为一个作业分配至少两个容器(一个驱动+一个执行器),如果没有可用的容器,则将其保留在队列中。 我怎么能这样配置YARN呢?
(我在AWS EMR集群上运行,几乎所有的默认设置都是如此)。
如果你的YARN使用 FairScheduler
你可以限制并发运行的应用程序数量,以及一个池子中AM可以使用的百分比(把剩下的留给执行者)。
maxRunningApps: maxRunningApps:限制队列中同时运行的应用程序数量。
maxAMShare.限制队列中可用于运行应用主程序的公平份额。 限制队列的公平份额中可用于运行应用主控的部分。此属性只能用于叶队列。例如,如果设置为 1.0f,那么叶队列中的 AM 可以占用内存和 CPU 公平份额的 100%。值为-1.0f将禁用该功能,并且不会检查amShare。默认值为0.5f。