前言
提起集群调度,大家都会想到Borg、Mesos等系统。Borg一直比较神秘,没有详细的介绍(论文、源码等);Mesos则既有论文、又有开源代码,可供我们研究。最近半年,Google又初步介绍了它的新一代调度系统Omega。其实,无论Borg、Mesos还是Omega,背后都或多或少有UC Berkely的参与。一直以来,UC Berkely都是CS、尤其是集群调度的翘楚,要了解集群调度,follow UC Berkely的工作算是重要的入门捷径。去年,UC Berkely的AndrewD. Konwinski,写了一篇Survey性质的文章《Multi-agentCluster Scheduling for Scalability and Flexibility》,我专门研读翻译了本文,这里奉上译文的简要总结版(翻译全文过长,简要总结版中包含本人的少量总结),供大家交流。由于本人水平有限,翻译和理解难免有不当之处,敬请指正。
正文
Multi-agent Cluster Scheduling for Scalability andFlexibility
可扩展和灵活的多代理集群调度
电气工程与计算机科学
美国加州大学伯克利分校
技术报告UCB/EECS-2012-273号
http://www.eecs.berkeley.edu/Pubs/TechRpts/2012/EECS-2012-273.html
2012年12月22日
Andrew D. Konwinski
在电气工程和计算机科学哲学博士
美国加州大学伯克利分校
Professor Randy H. Katz,Chair
主要术语翻译对照表
译者注:本文中有许多术语出现多次,准确理解它们是理解全文的基础。本文译者水平有限,难免有词汇翻译不够准确,或与常见译文不同。故将主要术语及其译文汇总如下,便于读者理解。
中文 |
英文 |
简称/备注 |
集群调度分类法 |
taxonomy of cluster scheduling |
|
蒙特卡洛仿真器 |
Monte Carlo simulator, |
|
多代理调度 |
Multi-agent Scheduling |
|
单一状态调度 |
Monolithic State Scheduling |
MSS |
分区状态调度 |
Partitioned State Scheduling |
PSS |
静态分区状态调度 |
Statically Partitioned State Scheduling |
SPS |
动态分区状态调度 |
Dynamically Partitioned State Scheduling |
DPS |
复制状态调度 |
Replicated State Scheduling |
RSS |
架构 |
architecture |
|
框架/计算框架 |
framework |
|
灵活性 |
flexibility |
对各种框架的兼容性 |
(性能)可扩展性 |
scalability |
节点、任务的增加 |
(实现)可拓展性 |
extensibility |
系统实现的可扩展 |
工作负载 |
workload |
|
一般/通用模型 |
general model |
|
集群的一部分/机器 |
cell |
类似二级集群概念,疑 |
同构 |
homogeneous |
|
异构 |
heterogeneous |
|
偏好/偏爱 |
preferences |
|
安置 |
placement |
指任务或数据 |
挑剔性 |
pickiness |
需要特定的资源 |
任务-资源分配 |
task-resource assignment |
|
任务持续时间 |
task duration |
|
调度器 |
scheduler |
|
调度决策 |
Scheduling decision |
|
资源分配 |
resource allocation |
|
执行器/者 |
executor |
|
resource offer |
resource offer |
offer相关短语,未翻译 |
摘要
本文提出一种分类方法,并使用一般的高级别集群调度分类方法、蒙特卡洛仿真器和实际系统实现,从可扩展性和灵活性评价了三种集群调度架构。我们首先考虑单一状态调度(MSS),然后考虑了两种新架构:动态分区状态调度(DPS)和复制状态调度(RSS)。我们描述和评价DPS调度,它采用悲观并发控制来实现集群资源共享。我们然后提出Mesos的设计、实现和评价,Mesos是一种现实的DPS集群调度器,它允许多种集群计算框架高效的共享资源。我们的评估显示Mesos具有高利用率、对负载变化的快速响应、灵活满足多种计算框架,在扩展到5000个节点时仍保持鲁棒性。我们也展示现有的和新的计算框架共享集群资源。最后,我们将描述并评价RSS,这是Google在Omega(下一代集群管理系统)中正在探索的集群调度架构。RSS采用针对共享集群资源的乐观并发控制。我们展示在RSS乐观并发调度和DPS悲观并发调度的折中,并量化RSS增加灵活性在作业等待时间和调度利用率方面的代价。
下表为译者注:
调度架构 |
简称 |
典型系统 |
集群状态 |
主要策略 |
优点及缺点 |
单一状态调度 |
MSS |
Hadoop |
单一、全局 |
单一调度队列 |
在灵活性、可扩展性上存在固有局限 |
静态分区状态调度 |
SPS |
多个非重叠分区 |
静态多代理 |
资源利用率较低,与多个集群没有本质区别 |
|
动态分区状态调度 |
DPS |
Mesos |
多个非重叠分区,可动态调整 |
动态多代理;元调度代理调整其他代理的调度域;推送,悲观并发控制 |
灵活性、可扩展性好、实验证明利用率高。缺点:难以达到全局最优,并发性相对一般 |
复制状态调度 |
RSS |
Omega |
多个重叠分区,集群状态的多副本 |
多代理;全局状态共享、无锁乐观并发控制 |
灵活性、可扩展性、并发性好;实际性能与事务失败频率相关。 |
第一章 介绍
背景
1.资源越发便宜、易得,无论是购买服务器硬件还是购买云服务。
2.存在多种处理专门问题的计算框架,未来还会出现其他计算框架。
3.集群规模变大。(不同部门可能拥有多个集群,但趋势是每个集群都变大了)
4.集群复用正在变为趋势。集群复用包括在同一集群上运行不同的计算框架,或者在同一集群上运行同一框架的不同实例。(每个部门可能拥有各自的集群,但在部门、小组内部,仍然存在集群复用)
5.需要一种资源管理的“软件系统”,而非“人类系统”,即可以自动化地完成资源分配和调度,而非人员手动完成。
问题描述
面对上述趋势与需求,我们需要设计提供灵活性、可扩展性、高效资源分配的集群调度器。我们以支持多种编程框架的难易程度来衡量“灵活性”。我们以作业速度和可管理的机器数量来衡量“可扩展性”。最后,我们以基础物理资源的总使用量来衡量“资源利用率”。
本文贡献
1.提出集群调度的一般模型、分类方法、仿真框架,我们利用仿真框架从扩展性、灵活性和利用率等方面比较MSS、DPS、RSS架构。
2.介绍Mesos(这是一种动态分区状态调度系统,)的设计与实现,评价Mesos,它可以扩展集群至数万台机器,提供不断增加的框架开发灵活性,提高资源利用率。
3.评价Omega的设计,这是一种Google正在研究的RSS调度系统。
第二章 集群调度的一般模型与分类方法
集群工作负载分类
1.服务型作业和终止型作业(后文多描述为批处理作业)。
2.任务挑剔性。默写任务只能在特定的机器上执行。
3.作业弹性,可以动态扩展、缩小框架的资源量。
4.作业和任务持续时间。
5.不同集群具有不同组成的工作负载类型,一种典型负载是服务型作业与终止型作业的混合。
集群调度术语(部分)
1.群集状态:一张逻辑数据表,类似于一个数据库表,集群中每台服务器是一行。列代表服务器所包含的不同类型的资源。行可以被添加、读取、更新或删除。这些操作对应集群所有服务器或者单个服务器资源的添加、配置或迁移。图2.1中包含了代表集群状态和单行放大视图的概念图。
2.调度域:群集状态中行的一个子集。
3.任务:原子计算单位。一个任务选择性地具有一套资源需求集合,并选择性地具有一套放置约束集合。
4.作业:工作负载单位。一个作业是一组任务的集合,有一个作业级调度约束列表,并有一个用户。作业可以是“服务型作业”或“终止型作业”。
图2.1 集群状态图,代表集群中机器可用资源的数据表。放大的矩形代表集群状态每行的内容。
5.任务-资源分配:一个任务与一台机器上非空可用资源集合的配对。从概念上将,这包含下列足够的信息以创建一个“应用”在集群状态的事务――{machine ID, task ID,<resource name1, resource amount1>, <resource name2, resourceamount2>,…}。具体来说,machine ID标示具体一行,resource name标示具体一列,resource amount表示具体一列需要减去的数值。举例来说,一个任务-资源分配也许像这样:{machine ID: 12, task ID: 20,<“CPUs”, 2.0>, <“Memory(GB)”, 1.0>}。
6.调度代理:根据调度代理策略去创建任务-资源分配。一个调度代理有一个调度代理策略。输入作业和调度域的访问权限,输出是一组任务-资源分配。
7.作业队列:包含未完成任务的作业队列。
8.作业管理员/器:负责管理作业并与用户交互的实体。作业管理员/器有一个调度代理和作业队列。
集群调度架构的分类方法
1.单一状态调度MSS。独占性访问集群状态的单一调度代理,串行地执行所有调度决策,没有作业级的并行。
2.分区状态调度PSS。多个调度代理在非重叠地集群状态分区中并行执行独立调度决策,包括两个子类别,静态分区状态调度SPS和动态分区状态调度。
3.复制状态调度RSS。多个调度代理均维护一个集群状态的完全私有副本。代理们并行执行调度决策。乐观并发和冲突解决策略用于检测和解决在集群装调中同一行的并发写问题。
图2.2 集群调度分类总览
第三章 单一状态调度MSS
在MSS中,所有的任务-资源分配都通过单一调度代理串行化执行。图3.1显示了这种架构在分类法中的位置,图3.2为MSS的架构图。大多数现有的集群管理系统和高性能计算系统使用MSS,例如Hadoop、Torque。
MSS缺点:MSS只具有一个串行地调度队列,无法实现并行。此外,MSS几乎不可能实现一套API,满足所有现有的、未来的计算框架的需求。即使理论上MSS满足所有框架的需求,这也将过于耗时、复杂,并对可扩展性、弹性、可维护性产生负面影响。因此,MSS在可扩展性和灵活性(即对多种框架的兼容性)上存在固有缺陷,无法成为未来主流的调度方案。
图3.1 MSS在集群调度分类法中的位置
图3.2 单一状态调度架构图。作业提交到作业管理器,进入作业队列,在那里它们等待被调度代理处理。调度代理通过编辑集群状态行,为每个任务创建任务-资源分配。
第四章 分区状态调度 PSS
在PSS中,同时存在多个活跃的调度代理,每个代理都可以独立进行任务-资源分配。分区状态调度PSS是一种多代理调度,它包括静态分区调度SPS和动态分区调度DPS,二者都将集群状态分为非重叠分区。通过跨多个调度器划分资源,分区状态代理PSS相比单一调度代理MSS,在可扩展性和灵活性上具有优势。
图4.1 静态分区状态调度和动态分区状态调度
SPS、DPS优缺点:静态分区状态调度SPS较为流行,也有一些好处。然而,实际运行中手动划分集群费时费力,此外还会导致静态分区间的资源碎片和低资源利用率。为了克服SPS的缺点,我们提出动态分区状态调度DPS,它具有元调度代理,元调度代理负责动态调整各个分区的大小。
动态分区状态调度DPS也存在一些问题。第一,相比于MSS,调度可能无法到达全局最优,但其实实际效果较好(通过Mesos实验证明);第二,仍然存在一些资源碎片;第三,计算框架与DPS调度器的交互工作,框架为了与DPS调度器交互,需要实现一些交互API,这添加了框架的复杂性,但是问题并不很严重。
图4.2 静态分区概念图
图4.3 动态分区多代理调度概念图。元调度代理根据元调度策略,负责调整非重叠的调度域的大小。
第五章 Mesos 一种动态分区状态调度器 DPS
优势与理念:Mesos可以实现集群复用,实例隔离,兼容多种框架;它将资源抽象独立出来,使开发者可以专注于构建特定计算框架。Mesos坚持“最小化”策略,只负责框架间共享资源,具体调度控制权交给框架。
Mesos的具体架构和resource offer机制见论文详细翻译版。
实验表明,Mesos在灵活性、可扩展性、资源利用率都表现不错,作者未强调Mesos的缺点。
第六章 复制状态调度 RSS
现在提出一种PSS的自然拓展――RSS,这是一种新的多代理调度架构,在其中所有调度代理可以操作同一个调度域,即所有的作业管理器维护一个集群状态的私有副本。图6.1显示RSS在分类图中的位置。
图6.1 RSS在集群调度架构分类中的位置
RSS实现思路:在RSS中,有一个元调度代理维护的共有集群状态,它相当于集群内资源分配器的弹性主拷贝(resilient master copy)。此外,每个作业调度器维护一个私有集群状态副本,在每次创建作业事务之前,私有集群状态与共有集群状态进行同步。图6.2是RSS组件的架构概念图。
图6.2 复制状态调度概念图每个作业管理器位置一个集群状态的私有副本,元调度代理根据元调度策略,负责管理私有集群状态与共有集群状态的更新。
RSS中作业管理器的工作流程:
1.如果作业队列不为空,从作业队列中取出下一个作业。
2.同步:开始一个事务,同步私有集群状态和共有集群状态。
3.调度:驱使调度代理尝试为作业中所有任务创建任务-资源分配,在这个过程中修改私有集群状态。
4.提交:从私有集群状态尝试提交作业事务(即该作业的所有任务-资源分配)到共有集群状态。作业事务可能成功或失败。
5.记录哪些任务-资源分配成功提交到共有集群状态。
6.如果作业调度中存在问题(如已经没有足够资源),则将该作业重新加入作业队列,准备在未来事务中再次处理。
可能存在的缺点:由于采用乐观并发调度,事务可能会失败,失败的事务需要在后面重做。RSS架构的性能,最终取决于事务失败的频率以及失败的代价。作者实验表明,使用资源粒度冲突检测语义和增量事务语义(两种策略细节,在详细翻译版本中有专门介绍)的RSS,性能不错,与Mesos基本相当。但本人认为实验中只有两个作业管理器,管理器之间的干扰有过于简化之嫌。
第七章 总结与未来的工作
本文作者主要考虑三种集群调度架构,分别是MSS、DPS、RSS。除MSS存在固有缺陷外,对DPS和RSS的评价对比则较为谨慎,并未指出RSS优于DPS。作者认为Mesos的可扩展性、灵活性、集群利用率均较好,未强调Mesos的缺点。指出DPS的一些缺点,但认为实践中这些问题均不严重。另一方面,作者认为RSS在并行性、资源可视性方面具有优势,但是在作业等待时间等方面存在一定性能代价。实验表明,RSS所采用的基于状态共享乐观并发控制的调度模型是“可行的、具有吸引力”的集群调度方法。
作者提出未来的主要工作,是“计划从RSS和Omega吸取经验教训,运用到Mesos中”。单从着手点上看(可能本质是类似的),作者不准备再单独写一个新版本的Omega,而是结合resourceoffer(Mesos资源分配机制)和无锁乐观并发调度,改造Mesos。
本文出自 “说话的白菜” 博客,谢绝转载!