我配置了容量调度程序,并在特定队列中调度作业。但是,我看到有些队列中的作业有时完成得更快,而另一些队列中的作业则等待之前的作业完成。这会导致一种情况,我一半的容量处于空闲状态,另一半则忙于等待获取资源的作业。
答案 0 :(得分:0)
这里的容量调度程序似乎是一个问题,我改用公平调度程序,肯定会看到群集利用率得到了极大的改善,在使用caoacity-scheduler的情况下,群集利用率提高了约75%,比40s还好
答案 1 :(得分:0)
所以背后的原因是,当多个用户将作业提交到同一队列时,它会消耗最大的资源,但是即使最大容量大于该最大容量,单个用户也不会消耗超过该容量的资源。
因此,如果您为{em> capacity-scheduler.xml 一个指定yarn.scheduler.capacity.root.QUEUE-1.capacity: 20
,则即使您的集群用户也不会占用QUEUE-1队列20%以上的资源有免费资源。
默认情况下,该用户限制因素设置为1
。因此,如果将其设置为2
,且最大分配的资源大于或等于40,则您的作业可以使用40%的资源。
yarn.scheduler.capacity.root.QUEUE-1.user-limit-factor: 2
请遵循此blog