10.4.3 多层队列调度

在Hadoop 1.0中,队列以平级结构组织在一起,且每个队列不能再进一步划分。但在实际应用中,每个队列可能代表一个部门,该部门可能又进一步划分成若干个子部门或者将自己的资源按照应用类型划分到不同队列中,最终形成一个树形组织结构。一个典型的例子如图10-6所示。

为了支持这种多层队列组织方式,在Hadoop 2.0中,Capacity Scheduler在现有实现基础上添加了对多层队列的支持,主要特性如下:

❑整个组织结构由中间队列和叶子队列组成,其中,中间队列包含若干子队列,而叶子队列没有再分解的队列。

❑任何队列可划分成若干子队列,但子队列容量之和不能超过父队列总容量。

❑用户作业只能将作业提交到某个叶子队列中。

❑当某个队列出现空闲资源时,优先共享给同父亲的其他子队列。以图10-6为例,当队列C11中有剩余资源时,首先共享给C12,其次是C2,最后才是A1,A2和B1。

❑进行任务调度时,仅考虑叶子队列,且采用的调度机制与现有的调度机制一致。

10.4.3 多层队列调度 - 图1

图 10-6 Capacity Scheduler多层队列结构图