Skip to content

Lec 19 集群调度

Sparrow: distributed, low latency scheduling, SOSP'13

Shinjuku: Preemptive Scheduling for μsecond-scale Tail Latency, NSDI ’19

论文阅读:Sparrow

《Sparrow:分布式、低延迟的调度》

摘要

大型数据分析框架正朝着更短的任务持续时间和更高的并行度转变,以提供低延迟。调度数百毫秒内完成的高并行度任务对任务调度器提出了重大挑战,调度器需要在毫秒级延迟和高可用性下每秒在合适的机器上调度数百万个任务。我们证明了一种去中心化的、随机采样的方法可以在避免中心化设计的吞吐量和可用性限制的同时提供接近最优的性能。我们在一个由110台机器组成的集群上实现并部署了我们的调度器 Sparrow,并证明 Sparrow 的性能与理想调度器相差不超过 12%

1. 引言

当今的数据分析集群正在运行越来越短且并行度更高的任务。受低延迟交互式数据处理需求的推动,研究界和工业界已经开发出一些框架(例如 Dremel、Spark、Impala),这些框架通过将工作分配到数千台机器上或将数据存储在内存中,在几秒内分析大量数据(如图1所示)。我们预计,这一趋势将持续,例如用户界面服务将能够在每个查询上运行复杂的并行计算,如语言翻译和高度个性化的搜索。这种低延迟框架带来的好处,提高了公平性和缓解了“尾部延迟”问题。

image-20241108104119911

修改当前的集中式调度器以支持亚秒级并行任务是一个艰巨的工程挑战。支持亚秒级任务需要比现有最快的调度器(如 Mesos、YARN、SLURM)高出两个数量级的吞吐量;在单节点调度和启动所有任务的设计中很难实现这一设计需求。此外,实现高可用性需要在亚秒时间内复制或恢复大量状态。

我们提出了一种从一组自治(无状态)、分布式的调度器Sparrow。系统可以通过添加调度器来支持更多请求,而如果某个调度器出现故障,用户可以将请求重定向到其他调度器。去中心化设计的关键挑战在于提供与集中式调度器相当的响应时间,因为同时操作的调度器可能会做出相互冲突的调度决策。

(创新点)它将“两次选择”(power of two choices,简单说就是随机探测两个服务器,把任务放置到较少负载的服务器上)的负载均衡技术应用到并行任务调度领域。我们引入了三种技术来使“两次选择”在并行作业集群中有效。

  • 批采样: 对于并行作业,“两次选择”效果较差,因为作业响应时间对尾部任务等待时间非常敏感(因为作业在最后一个任务完成前无法完成),而尾部等待时间在“两次选择”下仍然很高。批采样通过将最近开发的多选择方法应用到并行作业调度领域解决了这个问题。批采样不为每个任务单独采样,而是将作业中的m个任务放置在d·m个随机选择的工作机器中任务队列最少的机器上(d > 1)。我们通过分析证明,与“两次选择”不同,批采样的性能不会因为作业并行度增加而降低
  • 延迟绑定:“两次选择”仍然存在两个性能问题:首先,服务器队列长度不是等待时间的良好指示;其次,由于消息延迟,多调度器并行采样可能会遇到竞态条件。延迟绑定通过将任务分配给工作机器的过程延迟到工作机器准备好运行任务时来避免这些问题,并将作业的中位响应时间降低最多45%。
  • 策略和约束:Sparrow在工作机器上使用多个队列来执行全局策略,并支持分析框架所需的每个作业和每个任务的放置约束。简单的理论模型未涉及策略执行和约束处理,但在实际集群中,两者都扮演着重要角色。

我们在一个包含110台机器的集群上部署了Sparrow以评估其性能。在调度TPC-H查询时,Sparrow的响应时间比理想调度器仅高出12%,排队延迟中位数不到9毫秒,且在120毫秒内即可从调度器故障中恢复。即使存在执行时间比短任务长三个数量级的任务,Sparrow仍为短任务的作业提供了低响应时间。

2. 设计目标

本文关注于低延迟应用的细粒度任务调度。

与批处理工作负载相比,低延迟工作负载对调度有更高的要求,因为批处理工作负载占用资源时间较长,因此只需要不频繁的任务调度。为了支持由亚秒级任务组成的工作负载,调度器必须提供毫秒级的调度延迟,并支持每秒数百万次的任务调度决策。此外,由于低延迟框架可能用于驱动面向用户的服务,低延迟工作负载的调度器应能够容忍调度器故障

Sparrow 提供细粒度任务调度,这与集群资源管理器提供的功能互为补充。Sparrow不会为每个任务启动新的进程;相反,Sparrow假定每台工作机器上已经为每个框架运行了一个常驻的执行进程,因此在任务启动时,Sparrow只需发送一个简短的任务描述(而不是大的二进制文件)。这些执行进程可以在集群的静态部分内启动,也可以通过集群资源管理器(如 YARN、Mesos、Omega)启动,这些管理器会将资源分配给 Sparrow 及其他框架(例如传统的批处理工作负载)。

问题: 这篇论文试图解决什么问题?这个问题有多现实? 关键思想: 解决方案中的主要思想是什么? 新颖性: 与之前的工作有何不同?是一个新问题,一个新解决方案,还是一个现有问题的新环境? 批评: 你会对解决方案做出什么改变?你对作者呈现或评估解决方案的方式有何看法? 课堂问题: 列出一组问题来启动对论文的课堂讨论。问题可以是你希望论文能更好地解释/处理的内容,或者是你如何扩展这项工作,或是这篇论文对云计算整体系统的影响。

论文阅读:Shinjuku

《Shinjuku: μs级别的抢占式调度》