我正在使用Hadoop 2.9.0。是否有可能在YARN中提交具有不同优先级的工作?根据一些JIRA门票,似乎现在已经实施了应用程序优先级。
我尝试使用YarnClient
,并在提交作业之前将优先级设置为ApplicationSubmissionContext
。我还尝试使用CLI并使用updateApplicationPriority
。但是,似乎没有任何改变应用程序优先级,它始终保持为0.
我是否误解了YARN的ApplicationPriority概念?我看到一些关于为队列设置优先级的文档,但对于我的用例,我需要在一个队列中的所有作业。
对于我的理解或对我可能做错的建议表示感谢。
感谢。
答案 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