一、资源调度策略
多用户多作业的环境下,如何将集群资源在它们之间进行分配,需要特定的策略。
- FIFO
- 公平调度器
- 能力调度器
- 延迟调度策略
- 主资源公平调度策略
1. FIFO
- 最简单的资源调度策略。
- 提交的作业,按照提交时间先后顺序,或者优先级次序,将其放入线性队列相应位置,先进先出调度和分配资源。
- 缺点:多用户场景下,新加入的作业容易出现长时间等待调度的现象。
2. 公平调度器
- Facebook为Hadoop开发的多用户多作业调度器。
- 用户的任务分配到多个资源池(pool)。
- 每个资源池设定资源分配的最低保障和最高上限。
- 管理员可以指定资源池的优先级。
-
调度过程:
1. 根据每个资源池的最低保障,将部分资源分配。
2. 按照资源池的指定优先级将剩余资源,按照比例分配给各个资源池。
3. 各个资源池中,按照作业优先级或者公平策略,将资源分配给各个作业。
3. 能力调度器
- Yahoo为Hadoop开发的多用户多作业调度器。
- 与公平调度器相比,其更强调资源在用户之间,而非作业之间的公平性。
- 面向用户划分成多个队列,每个队列设定资源分配的最低保障和使用上限。
- 当一个队列的资源有剩余时,可以暂时将其分享给其他队列。
- 调度时,优先将资源分配给资源使用率最低的队列。
- 队列内部按照FIFO调度。
4. 延迟调度策略
- 不是一种独立的调度方式,作为其他调度策略的辅助措施来增加调度的数据局部性,以此增加任务执行效率。
- 对于当前要分配资源的任务i,如果当前资源不满足数据局部性,那么可以暂时放弃分配公平性,跳过i分配资源给其他任务。
- 如果i在被跳过k次后仍然等不到满足局部性的资源,则放弃数据局部性,启动i。
5. 主资源公平调度策略DRF
- Mesos中央调度器采用的公平调度策略,是最大最小公平算法的一个具体体现。
- 最大最小公平算法:最大化目前分配到最少资源的用户或者任务的资源量。用来对单个资源进行