"应用程序优先级"在纱线

时间:2018-02-07 21:59:09

标签: hadoop yarn

我正在使用Hadoop 2.9.0。是否有可能在YARN中提交具有不同优先级的工作?根据一些JIRA门票,似乎现在已经实施了应用程序优先级。

我尝试使用YarnClient,并在提交作业之前将优先级设置为ApplicationSubmissionContext。我还尝试使用CLI并使用updateApplicationPriority。但是,似乎没有任何改变应用程序优先级,它始终保持为0.

我是否误解了YARN的ApplicationPriority概念?我看到一些关于为队列设置优先级的文档,但对于我的用例,我需要在一个队列中的所有作业。

对于我的理解或对我可能做错的建议表示感谢。

感谢。

1 个答案:

答案 0 :(得分:1)

是的,可以在纱线群集上设置应用程序的优先级。

叶子队列级优先级
您可以定义具有不同优先级的队列,并使用spark-submit将您的应用程序提交到具有所需优先级的特定队列。

基本上你可以在etc / hadoop / capacity-scheduler.xml中定义你的队列,如下所示:

<property>
  <name>yarn.scheduler.capacity.root.prod.queues</name>
  <value>prod1,prod2</value>
  <description>Production queues.</description>
</property>

<property>
  <name>yarn.scheduler.capacity.root.test.queues</name>
  <value>test1,test2</value>
  <description>Test queues.</description>
</property>

请参阅队列属性here

的文档
  

注意:应用程序优先级仅适用于FIFO排序策略。   默认排序策略是FIFO。

为了设置应用程序优先级,您可以将这样的属性添加到同一文件中:

<property>
  <name>yarn.scheduler.capacity.root.test.default-application-priority</name>
  <value>10</value>
  <description>Test queues have low priority.</description>
</property>

<property>
  <name>yarn.scheduler.capacity.root.prod.default-application-priority</name>
  <value>90</value>
  <description>Production queues have high priority.</description>
</property>

查看有关应用程序优先级here

的更多信息

在运行时更改应用程序优先级:
如果要在运行时更改应用程序优先级,还可以使用CLI,如下所示:

yarn application -appId <ApplicationId> -updatePriority <Priority>

您可以分享您在哪个节点上执行的命令以及您获得的响应?

查看更多信息here

使用YarnClient
您没有共享您的代码,因此很难看出您是否正确执行。但是可以使用YarnClient

提交具有特定优先级的新应用程序
ApplicationClientProtocol.submitApplication(SubmitApplicationRequest)

查看更多信息here