admin管理员组

文章数量:1611924

之前看了LinkedIn的一篇Hadoop Yarn文章:https://engineering.linkedin/blog/2021/scaling-linkedin-s-hadoop-yarn-cluster-beyond-10-000-nodes

感觉写的很好,里面提到了两种优化CapacityScheduler调度效率的场景,这里提出来总结一下

一、修改队列调度排序

场景

CapacityScheduler默认根据利用率对队列进行排序,并首先将 containers 分配给利用率最低的队列。

假设我们有两个队列 A 和 B,如果 A 的利用率为 10%,B 的利用率为 20%,那么调度器将首先为队列 A 调度 containers,然后再移动到 B 队列,并为提供其服务。这在大多数情况下是有效;但是,在容器流失率高的环境中可能会出现短暂的死锁。

假设队列 B 中的大多数正在运行的作业都是相对较长的作业,而队列 A 中运行的作业是非常短命的作业。由于 A 的利用率仅为 10%,因此将在队列 A 中调度 containers 而不是队列 B。由于队列 A 中的 containers 流失率远高于队列 B,当调度程序完成队列 A 中的一次调度工作负载迭代时,队列 A 的利用率可能保持不变甚至下降,但仍远低于队列 B,例如 9.5%,而队列 B 的利用率略有下降至 19%。

在队列利用率收敛并且队列 A 的利用率超过队列 B 之前,调度程序不会接收提交到队列

本文标签: CapacitySchedulerPATCH