是的,可以在 yarn 集群上设置应用程序的优先级。
叶子队列级别的优先级
您可以定义具有不同优先级的队列,并使用 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 排序策略。
默认排序策略是先进先出。
为了设置应用程序优先级,您可以将这样的属性添加到同一个文件中:
<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