第四章 集群资源管理与调度

资源管理抽象模型
第四章 集群资源管理与调度
通用架构:
第四章 集群资源管理与调度
调度系统设计的基本问题

  • 资源异质性与任务负载异质性:
    资源异质说的是节点之间的配置并不都是相同的,有的节点cpu核数更多,内存容量更大,设计系统时应该考虑到,一般时通过细化资源分配粒度来来解决这个问题。而任务负载异质说的是,有长任务,有短任务,有需求大量资源的任务,有只要很少资源就能运行的任务,应结合实际场景综合考虑如何统筹安排这些任务,并能充分利用集群的资源。
  • 数据局部性
    任务向数据移动,一个好的调度系统应该尽量保证节点局部性。所谓节点局部性是指,任务被发送的节点存有对应的数据。
  • 抢占式调度还是非抢占式调度
  • 死锁与饿死问题
  • 资源隔离机制
    yearn与mesos都采用的是linux容器

调度器模型

  • 集中式调度器
    所有的调度逻辑全由中央处理器进行处理,中央处理器成为性能瓶颈,并发性能不高,所以不适合大规模集群。
  • 两级调度器
    从中央处理器分离出部分功能,放到下一级的调度器,并发性能更高。
  • 状态共享调度器
    与两级调度器不同的是,状态共享调度器的所有下一级调度器能看到集群中所有的资源状态,并进行抢占式获取。他适合与任务异质性强的场景

资源调度策略及调度器

  • 先进先出调度策略
  • 延时调度策略
    延时调度策略准确的来说不是一种策略,它的思想是,当任务分配不能满足数据局部性时,可以先等待一段时间,让其他的任务先执行,以期在此期间对应的资源会被释放。
  • 主资源公平调度策略(DRF)
    对于多种类型的任务,优先给 已分配主资源/该类资源总量 的任务分配相应资源,初始时 优先给 该任务所需主资源/该类资源总量 的任务分配资源。尽量让各类型的任务分得的主资源/该类资源总量 大致相等。
  • 能力调度器
    能力调度器会限制每个用户使用的资源总量。
  • Fair调度器
    公平调度器的流程如下,先按照队列所需的最小资源保障将资源分配给队列,然后将剩余资源依照队列间的优先级按比例分配给他们。在队列内部,它默认采用DRF算法调度任务。它主要与能力调度器有两点不同,其支持抢占式调度,当一个队列长时间得不到资源时,调度器会杀死大人任务,将其资源分配给该队列;其次其默认采用DRF算法。