纱线容量计划程序:在用户和队列之间共享资源

时间:2018-06-20 11:05:15

标签: apache-spark hadoop yarn ambari

我在设置以下调度程序队列参数时遇到麻烦:

有2个队列Dev和Prod

  • 根100%

    • Dev 30%

    • 产品70%

(如果仅使用一个,则应充当集群的100%)

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

我现在拥有的示例流程:

  1. 集群没有工作

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

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

我想要什么:

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

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

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

基于Apache Ambari

版本2.6.1.5

2 个答案:

答案 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队列上重新分配负载

但是,如果您在每个用户的内部创建子队列,则它可以工作,但是您必须为每个用户进行管理(我们是小公司,用户很少,因此可管理)

  • 根100%
  • 产品70%
    • user1 25%(70之25)
    • user2 25%(70个中的25个)
    • user3 25%(70个中的25个)
    • user4 25%(70个中的25个)

我在网格上配置了此方案,但仍在寻找更好的方法