Yarn Capacity Scheduler:在用户和队列之间共享资源

Yarn Capacity Scheduler: Share resource between users and queues

我在设置以下调度程序队列参数时遇到了一些问题:

有 2 个队列 Dev 和 Prod

(如果只有一个使用它应该作为集群的 100%)

每个队列由多个用户使用,资源应该平均共享,但是当只有一个用户存在时(在每个队列中)它应该使用队列的全部容量。如果用户单独在集群中,它应该使用 100% 的集群以防第二个用户加入,调度程序应该共享可用资源

我现在有什么,示例流程:

  1. 集群没有作业

  2. user 队列 Dev 的提交作业。 (它现在使用 100% 的集群)

  3. 用户 B 在队列 Dev 提交作业(它挂在已接受并等待第一个作业完成)

我想要的:

在这种情况下,因为第二个作业在同一个队列中,每个作业都应该接收队列的 50%,即集群的 100%。

然后,如果另一个作业进入 Prod 队列(Prod 上的 2 个作业将共享 70%(每个作业 35%),Dev 上的一个作业将共享 30%)

在另一种情况下,如果作业进入另一个队列(总共 1 个),则容量应为 30,70

基于 Apache Ambari

版本 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% 的资源。至于开发队列,先到先得..

正如哈罗德所说

there’s no way to redistributed the load on the same YARN queue

但是如果你在里面为每个用户创建子队列它可以工作,但是你必须为每个用户管理它,(我们是小公司并且用户很少所以它可管理)

  • 根 100%
  • 生产率 70%
    • user1 25%(70 人中的 25 人)
    • user2 25%(70 人中的 25 人)
    • 用户 3 25%(70 人中的 25 人)
    • user4 25%(70 人中的 25 人)

我在我们的网格上配置了这个场景,但仍在寻找更好的方法