对于YARN中的单个队列,如何将state = RUNNING中的spark应用程序数限制为1?

时间:2017-03-03 06:18:26

标签: apache-spark pyspark yarn

我有多个火花工作。通常我将我的火花作业提交给纱线,我有一个--yarn_queue选项,告诉它输入哪个纱线队列。

但是,这些工作似乎在同一队列中并行运行。有时,一个火花作业的结果是下一个火花作业的输入。如何在同一队列中按顺序而不是并行运行我的spark作业?

我查看了this页面的容量调度程序。但我能看到的最接近的是财产yarn.scheduler.capacity.<queue>.maximum-applications。但这只设置了PENDING和RUNNING中的应用程序数量。我对设置处于RUNNING状态的应用程序数量很感兴趣,但我并不关心PENDING中的应用程序总数(或者接受的是同一个应用程序)。

如何为单个队列将state = RUNNING中的应用程序数量限制为1?

2 个答案:

答案 0 :(得分:1)

您可以在容量调度程序配置中一次管理适当的队列运行一个任务。我建议为此目的使用ambari。如果您没有机会应用guide

的指示

答案 1 :(得分:1)

来自https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/FairScheduler.html

  

Fair Scheduler允许所有应用程序默认运行,但也可以通过配置文件限制每个用户和每个队列运行的应用程序数量。当用户必须一次提交数百个应用程序时,这通常很有用,或者一般来说,如果同时运行太多应用程序会导致创建过多的中间数据或过多的上下文切换,则可以提高性能。限制应用程序不会导致任何后续提交的应用程序失败,只会在调度程序的队列中等待,直到某些用户的早期应用程序完成为止。

具体来说,您需要配置:

maxRunningApps: limit the number of apps from the queue to run at once

E.g。

<?xml version="1.0"?>
<allocations>
    <queue name="sample_queue">
      <maxRunningApps>1</maxRunningApps>
      <other options>
     </queue>
</allocations>