我在设置以下调度程序排队参数时遇到一些问题:
有 2 个队列开发和生产
-
根 100%
-
开发 30%
-
产品 70%
-
(如果只使用一个,它应该充当集群的 100%(
每个队列由多个用户使用,资源应平均共享,但是当只有一个用户存在(在每个队列中(时,它应该使用队列的全部容量。如果用户单独在集群中,则应使用 100% 的集群,以防第二个用户加入,调度程序应共享可用资源
我现在拥有的示例流程:
群集没有作业
用户 队列 Dev 的提交作业(它现在使用 100% 的群集(
用户 B 在队列 Dev 上提交作业(它挂起为已接受并等待第一个作业完成(
我想要什么:
在这种情况下,由于第二个作业位于同一队列中,因此每个作业都应接收队列的 50%,即集群的 100%。
然后,如果另一个作业进入生产队列(生产上的 2 个作业将共享 70%(每个 35%(,开发上的一个作业将共享 30%(
在另一种情况下,如果作业进入另一个队列(每个队列总共 1 个(,则容量应为 30,70
基于阿帕奇·安巴里
版本 2.6.1.5
作业 B 必须等待作业 A 完成。据我所知,没有办法在同一个 YARN 队列上重新分配负载。
如果启用了抢占 (https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_yarn-resource-management/content/preemption.html(,则生产作业将优先处理,并且确实应该占用 70% 的资源。至于开发队列,先进先得。
正如哈罗德所说
无法在同一 YARN 队列上重新分配负载
但是如果你为每个用户在里面做子队列,它可以工作,但你必须为每个用户管理它,(我们是小公司,用户很少,所以它是可管理的(
- 根 100%
- 产品 70%
- 用户1 25%(70 个中的 25 个(
- 用户2 25%(70 个中的 25 个(
- 用户3 25%(70 个中的 25 个(
- 用户4 25%(70 个中的 25 个(
我在网格上配置了此方案,但仍在寻找更好的方法