文献阅读笔记
[1] 分布式系统概念与设计 [英] George Coulouris Jean Dollimore Tim Kindberg 著 金蓓弘 译
[2] 调度能力 Capacity Scheduler
1. 关键词
调度能力
2. 主要内容
1)目的
这篇文档主要描述了 调度能力,一个可热插拔的 Map/Reducer 调度器给hadoop提供了共享大规模集群的能力。
2)特色
调度能力有如下的特色:
支持包涵多个作业的优先级队列。
队列只是控制了网格资源的一小部分,也就是说,一定的资源可以被队列所处置。
自由资源可以分配给任何一个没有“溢出”的队列。“溢出”部分的资源可以被回收并提供给另一个队列。
调度器将会保证当“溢出“资源从某一队列移走,会在N分钟内将其移回若此队列需要用的时候。
调度器有选择性的支持调度优先级。
在一个队列内部,高优先级的作业将会在低优先级的作业之前访问队列资源。然而,一旦一个作业运行,他不能够被切换。
为了阻止一个或者多个用户垄断资源,每个队列强制每个用户在任何时间都有一个使用资源的上限限制,加入出现竞争的话。
支持内存集中型的作业,如果作业拥有比默认值更高的内存需求。每个作业的任务仅能运行在有足够内存量的TaskTrackers上。。
3)选择一个任务运行
注意现在的很多步骤,直接可以凑成一个完整的算法。
当一个任务TaskTracker是自由的话,那么调度器首先会选择一个收回其资源的队列(这个队列的资源可能被其他队列所应用,并且需要马上召回这些资源)。如果没有这样的队列,那么会选择一个拥有更多自由空间的队列。(队列的运行槽率能够满足任务的最小资源需求)。
一旦一个队列被选择,那么调度器会选择一个作业放入队列中。作业的执行先后根据提交时间和优先级来确定。作业是有序执行的,在用户可以接受的情况下作业可以有选择性的执行。用户不能够超载使用队列资源。调度器能够确定这里有足够的自由缓冲区确保TaskTracker去运行作业的任务。因为作业需要很多的缓冲区需求。
一旦一个作业被选择,那么调度器选择一个任务去运行。
4)回收能力
周期性的调度决定:
如果队列拥有最小的挂起任务队列,并且他的部分资源被其他队列所用,那么队列就要有回收能力。如果这种情况出现了,那么调度器节点就会就会i声明他的资源并在一定时间内进行回收。
如果队列没有全部收回它所需要的资源,并且他的回收时间已经到期。这种情况下,调度器需要杀队列中的任务。
5)安装
Installation
The capacity scheduler is available as a JAR file in the Hadoop tarball under the contrib/capacity-scheduler directory. The name of the JAR file would be on the lines of hadoop-*-capacity-scheduler.jar.