纱线如何管理hadoop中的额外资源?

时间:2015-10-05 05:24:24

标签: hadoop yarn resourcemanager

考虑有3个顶级队列,q1,q2,q3.Capacity Scheduler

q1和q2的用户将他们的工作提交到各自的队列,他们保证获得他们分配的资源。现在q3和q2必须使用q3未使用的资源。纱线在划分额外资源时会考虑哪些因素?谁(q1,q2)获得偏好?

1 个答案:

答案 0 :(得分:0)

Capacity Scheduler中的每个队列都有2个重要属性(根据可用总资源的百分比定义),这些属性决定了调度:

  • 保证队列容量(由配置“ yarn.scheduler.capacity。{queue-path} .capacity”确定)
  • 队列增长的最大容量(由配置“yarn.scheduler.capacity。{queue-path} .maximum-capacity”确定)。这为队列的资源利用率设置了上限。队列不能超出此限制。

Capacity Scheduler以分层方式组织队列。 队列有两种类型“父”“leaf”队列。作业只能提交到 leaf 队列。

“ROOT”队列是所有其他队列的父级。

每个父队列根据需求对子队列进行排序(队列当前使用的容量是多少?是服务不足还是过度服务?)。

对于每个队列,比率(已用容量/总群集容量)会显示有关队列利用率的指示。 父队列始终优先考虑服务不足的子队列。

当将空闲资源提供给父队列时,资源将递归地分发到子队列,具体取决于队列当前使用的容量。

在叶子队列中,容量分布可以基于某些用户限制发生(例如配置参数: yarn.scheduler.capacity。{queue-path} .minimum-user-limit-percent ,确定每个用户保证拥有的最小队列容量。

在您的示例中,为简单起见,我们假设队列q1,q2和q3直接出现在“ROOT”下。如前所述,父队列根据队列的使用情况对队列进行排序。

由于根本没有使用q3,父母可以在q1和q2之间分配q3的未利用资源。

可用资源的分配基于以下因素:

  1. 如果q1和q2都有足够的资源来继续安排他们的工作,那么就没有必要从q3分发可用的资源

  2. 如果q1和q2都达到了最大容量(“yarn.scheduler.capacity。{queue-path} .maximum-capacity”,则此配置会限制队列的弹性。队列的要求不能超过此参数配置的百分比),则不会分配免费资源

  3. 如果队列q1或q2中的任何一个服务不足,则将免费资源分配给服务不足的队列

  4. 如果q1和q2都服务不足,那么服务最少的队列将被赋予最高优先级。