参考资料:
1 知识点
1.1 什么是调度
通常所说的调度(schedule
)是和时间有关的。
单 CPU 的时间片调度
时间作为唯一的不可逆转的资源,一般是划分为多个时间片来使用。就计算机而言,由于 CPU
的速度快的多,所以就有了针对 CPU
时间片的调度,让多个任务在同一个 CPU
上运行起来。某一时刻CPU还是单任务运行的。
多 CPU 协作
为了在同一时间运行更多的任务,或者多个处理器一起工作完成一个任务目标,就需要一个协调者——这就成为一个分布式系统,就单个数据中心或者小范围来说,这就是集群。
资源调度
如果让一个分布式系统运行多个任务,每个任务对分布式系统中的资源必然产生竞争,时间调度就发展到资源调度。【资源调度的概念】
1.2 有哪些资源
内存、CPU
、网络资源、磁盘 I/O
。
1.3 资源调度的目的
通过一定策略把资源分配给用户提交到系统里的各种任务。在计算机中资源管理与调度是根据具体场景而设定的,其实终极目的都是为了使资源分配的更加合理。
1.4 资源调度的意义
调度直接影响到运行集群的开销,好的资源调度框架,可以大大提高资源利用率,降低运营成本。一个糟糕的调度框架会导致集群的资源利用率很低,那些昂贵的机器资源则会白白浪费。
1.5 资源管理方式
静态资源划分
优点:简单,固定的硬件资源给固定的计算框架使用,各个框架各行其是,互不干扰。
扫描二维码关注公众号,回复:
4625394 查看本文章
缺点:整体资源利用率不高,经常出现集群计算系统资源不足。
典型场景:公有云的云计算,划分虚拟机。
动态与静态对比
- 动态会根据任务即时需要分配资源,不会出现资源闲置且不可用,也不会出现任务忙且不可得资源的尴尬局面。总之增加资源利用率,降低硬件成本。
- 增加数据共享能力,共用的资源存储一份就行啦,
- 说白了就是支持多类型计算框架和多版本计算框架,使用资源管理与调度平台可以实现两者平滑切换,给运营带来便利。
2 动态资源管理抽象模型
资源管理与调度系统:YARN
、Mesos
、Corona
、Quincy
,从上述系统抽象两个模型:
2.1 动态资源管理与调度的概念模型
概念模型 三要素:
- 资源组织模型:组织起来方便分配,如
all resource->group->pool
三级队列,或者平级多队列或单队列了等 - 调度算法:熟知的
FIFO
、公平调度、能力调度、延迟调度等,说白了就是按照什么方式分配资源 - 任务组织:
job
分配,比如全局队列、机架队列、节点队列等。说白了就是如何把任务组织起来
2.2 动态资源管理通用架构
- 每台机器都有节点管理器,负责收集它所在机器的资源使用情况,分配的任务放到不同容器执行,彼此隔离开,避免
job
彼此干扰。在这里它要给 资源收集器 汇报任务,这个 收集器 在把相关的信息反应给 资源池,资源池列出目前可用的资源。 - 通用调度器构成:资源收集器、资源调度策略,资源池,工作队列。
- 调度策略:FIFO、公平调度、能力调度等,在这里系统应用者可根据具体情况设定符合业务状况的调度策略,当用户新提交作业时,其进入工作队列,等着分配使其可启动的资源。
在这里系统应用者可根据具体情况设定符合业务状况的调度策略,当用户新提交作业时,其进入工作队列,等着分配使其可启动的资源