2015-10-05 63 views
1

考虑有3个顶级队列,Q1,Q2,q3.Capacity调度纱线如何管理hadoop中的额外资源?

Q1和Q2的用户提交自己的工作,以它们各自的队列,他们都保证得到他们分配的资源。现在没有被q3利用的资源必须被q1和q2利用。纱线在划分额外资源时考虑哪些因素?谁(q1,q2)获得偏好?

回答

0

在容量调度每个队列具有2个重要的特性,这确定调度(其在可用的总资源的百分比来定义的):

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

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

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

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

对于每个队列,比率(已用容量/总群集容量)给出了关于队列利用率的指示。 父队列始终优先处理最不充分的子队列。

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

在一个叶队列,容量的分布可能发生基于某些用户限制(例如配置参数:yarn.scheduler.capacity {队列路径} .minimum用户限制%的,确定每个用户保证拥有的最小队列容量)。

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

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

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

  1. 如果Q1和Q2有足够的资源来继续安排自己的工作,那么就没有必要从Q3分配可用资源

  2. 如果q1和q2都达到最大容量(“yarn.scheduler.capacity。{queue-path} .maximum-capacity”,此配置会限制队列的弹性。队列不能超过配置的百分比这个参数),然后是自由水库OURCES不分配

  3. 如果队列Q1或Q2中的任何一个是服务不足,那么免费的资源被分配到服务不足的队列

  4. 如果同时Q1和Q2是服务不足,那么最不受欢迎的队列被赋予最高优先级。

+0

谢谢@Manjunath Ballur – armourbear