一.作业调度器
- 容量调度器
- 公平调度器
二.容量调度器
- 容量调度器基于“队列”的概念来实现调度策略
- 队列与容器有些类似,也是在逻辑上定义了一个资源范围,这个范围叫做队列的容量。在一个队列中运行的Job一般不允许使用超过范围的资源,让Job在不同的队列中运行就可以支持Job并行了。所以,队列是跨节点的,容器只在节点内划分资源
- 队列在配置文件中创建。Job在提交时可以指定队列,如果不指定就使用默认队列。
- 可能又多个Job提交到一个队列,队列内的Job使用先进先出的调度策略(FIFO),即当前Job运行完下一个Job才能运行
- 在容量调度策略下,可以通过定义n个队列保证n个Job同时运行。
- 在Hadoop3中,如果只有一个队列A有Job,而队列B没有Job,那么队列A中的Job可以占用100%的资源
- 可以指定一个队列中占用资源的最大范围,比如指定队列A最大资源占用不超过80%,此时即使队列B中没有Job,队列A中的Job也不能使用超过80%的资源
- 队列支持层级结构,也就是队列可以包含子队列,子队列再包含岁队列。没有孩子的队列叫叶子队列,容量调度器支持动态创建叶子节点
三.公平调度器
- 公平调度器基于队列的概念实现调度策略
- 理论上讲,公平调度器想让所有Job立即运行而不必等待,这与容量调度器有很大不同(容量调度器只允许运行与队列数量相同的Job)。一般要为公平调度器指定最多运行的Job数量
- 公平调度器的队列根据占用资源使用比重来分配,而不