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