`

[Binospace] Sparrow(SOSP13)—一种加速短作业的调度方法

阅读更多

背景:

当前大规模数据分析框架的发展朝着两个趋势在变化:
1)任务执行时间更短。
2)更大的任务并行度。
 
因此,在当前分布式计算框架的调度系统中,需要有所改变,以满足如下的需求:
1)更快的任务调度效率,mill-seconds级别。
2)良好的容错,High Availability.
3)较高的吞吐率,High Throughput.
 
分析一下:什么原因会造成多任务的作业执行时间较长?
1)作业内任务分配不合理,在同样的并行层次上,任务执行逻辑和处理的数据量不一致,从而拉长整个作业的执行时间。以MapReduce为例的大数据分析框架中,数据是等分的,并且,处理逻辑是一致的,因此,该问题仅仅出现在以DAG、或者具有Data-Skew的数据逻辑中。
 
2)调度的不均衡性。根据Hadoop作业调度的情况,作业的执行时间由最为执行时间最长的任务决定。例如,Hadoop调度的一个MapTask到负载较高的节点上,从而整个作业的执行时间被拉长。
 
3)中心化的调度效率较低。在当前分布式数据处理框架中,大多数采用Master中心控制的方式来进行调度,例如Mesos/Yarn,需要维护作业和资源两类信息。在调度时,往往花在任务调度上的时间就已经达到秒级,从而很难实现更高的吞吐和更快的作业延迟。除此之外,为了实现高可用性,需要在秒级实现任务状态的复制和迁移,这无疑也给当前的分布式处理系统的设计带来了挑战。
 

设计思路与原理:

Sparrow的设计目标:
1)支持小作业的快速调度。
2)Low latency,High Throughput,High availability
 
Sparrow与通用的资源管理系统(Mesos、Yarn、Omega、vSphere)的区别:
1)不为长作业调度优化,focus on 在短、实时性高的作业;
2)  不做“限制性”调度,例如,Job A的任务调度到Job B任务所在机器上,这种依赖会造成调度的不平衡性;
 
 
核心设计:
 
1、弱化中心化Scheduler的功能,多个更小更快的Scheduler并行执行。
 
 sparrow1
 
2、Sample-based 调度方法。m个任务随机选择dm个worker(d>1),部署m个任务到m个queue队列较短的节点。
上图,展示在d=2的情况下,对比单个任务随机选择,与多个任务合并起来随机选择的差异。如上左图,一个作业的Task1 Task2调度过程中,有可能Task1选择的两台Worker任务队列比较长,而Task2选择的2个worker却都较为闲置。从而,因为随机选择的偶然性,造成作业内Task调度等待时间的差异,影响作业的执行延迟。而上右图,一个作业的两个任务,随机选择4个worker,选出两个任务负载较轻的工作节点,降低了Task调度等待时间的差异性的概率。据实验表明,采用batch sampling方法比per-task sampling平均缩短了10%的作业延迟。
 
该方法的缺陷:
1)队列的等待时间的不确定性。该调度方法以队列的长度为选择标准,是建立在队列内的任务执行时间一致的前提下的。在有些情况下,队列多的任务可能是短任务,而队列少的任务可能是长时间任务,仍会造成调度的不平衡性。
然而,预测队列的执行时间的难度是非常大的。
 
2)并发抢占造成的资源竞争。由于多个调度器独立、并发的调度任务,完全有可能多个任务同时被调度到任务负载较轻的工作节点,从而可能造成更长时间的等待。
基于以上两个方面的不足,引入了Virtual Reservation的概念。
 
3、Virtual Reservations
调度器选择一个作业,向dm个worker发送探测信号之后,worker会在队列末尾增加”预留位置(Reservation)”,当worker执行到队列Reservation的位置时,向调度器发送一个可以接受任务的请求,调度器在成功调度了前m个任务之后,会向另外(d-1)m个worker发送一个no-op信号,指示当前的作业的所有任务都已经提交。根据文章作者的实验结果表明,在工作节点上的task执行时间随机分布,且负载在90%的情况下,virtual reservations比batch sampling缩短35%的响应时间,使得执行时间在理论最优响应时间的114%以内。
 
 sparrow5
 
 
spillow-2
4、由Worker分担大部分调度逻辑。
所有的scheduler对于作业和任务进行统一配置,大部分的有关task-constraints的特性,可以通过增加Worker的逻辑来实现。例如,多队列任务调度,worker内维护多个队列,并且按照作业的属性(priority,perference,feature..etc.)来分配Reservation。这种调度特性逻辑下移到工作节点的做法,有利于提高Scheduler的调度的吞吐,并更容易实现Scheduler以及作业的HA。
 
嵌入计算框架的架构图:
sparrow4

Binos的思考:

使用reservation+worker RPC 反馈scheduler的方式,是在去中心化调度的宗旨下,借鉴了之前中心化调度的交互方式。但是,它相比较传统的调度模型的根本优势在于:
1)调度器无需维护工作节点的状态,是以作业为中心,而不是以工作节点为中心的调度。
2)转变竞争模式。通过高于预期slot的数量占位的方式,原有作业竞争资源变成资源竞争作业,同时提高了调度的平衡性。
3)更简洁的作业容错信息。一般情况下,由于scheduler无需维护工作节点的信息,只需关注提交的作业即可。(ps,类似Twitter-Storm的简洁的调度模式,方便简单可靠地实现系统的高可用)。
 

参考文献:

[1] SOSP13:Sparrow: Scalable Scheduling for Sub-Second Parallel Jobs

[2]Hadoop Fair Scheduler:http://hadoop.apache.org/docs/stable/fair_scheduler.html

[3]Eurosys 13:Omega: Flexible, scalable schedulers for large compute clusters.

[4]Twitter-Storm:http://storm-project.net

声明:

本文章属于Binos_ICTBinospace个人技术博客原创,原文链接为http://www.binospace.com/index.php/sparrow-sosp13-an-accelerated-short-job-scheduling-method/,未经允许,不得转载。

 
 

文章的脚注信息由WordPress的wp-posturl插件自动生成

 

分享到:
评论

相关推荐

    SPARROW

    标题“SPARROW”可能指的是一个特定的字体或者与之相关的设计项目,但提供的信息过于简洁,无法直接确定其具体含义。不过,我们可以基于“字体”这个标签来深入探讨字体设计、字体类型以及它们在IT领域的应用。 ...

    java排课源码-sparrow:麻雀调度平台(加州大学伯克利分校)

    设计用于需要为非常短的作业频繁分配资源的应用程序,例如分析框架。 Sparrow 从一组分布式调度程序中调度,这些调度程序不维护共享状态。 相反,为了调度作业,调度程序通过向工作机器的子集发送探测来获取瞬时负载...

    Sparrow-Framework官网源代码

    2. **OpenGL ES支持**:Sparrow基于OpenGL ES 2.0,这是一种强大的图形渲染技术,为游戏提供了丰富的视觉效果和流畅的动画。 3. **易于使用**:Sparrow提供了一套简单易懂的API,让开发者可以快速上手,降低了游戏...

    进销存管理程序 Sparrow

    《Sparrow进销存管理程序详解》 在IT领域,高效的管理工具是企业运营不可或缺的一部分,其中进销存管理程序扮演着至关重要的角色。本文将深入探讨名为"Sparrow"的进销存管理程序,旨在帮助用户更好地理解和利用这款...

    Sparrow OS设计文档连载三:Process Management

    Sparrow OS是一个小型的嵌入式操作系统,由赵凤阳(Michael Zhao)历经一年半时间编写完成,并对外分享了设计文档。本文作为系列文档的第三篇,主要讨论了Sparrow OS中的进程管理机制,包括进程的生命周期、优先级、...

    Sparrow是一款针对移动webapp开发的前端轻量级框架

    Sparrow是一款专为移动Web App开发设计的前端轻量级框架,它旨在简化开发者在构建响应式、高性能的移动应用时的工作流程。在当前的互联网环境中,随着移动设备的普及,移动Web App的需求日益增长,Sparrow应运而生,...

    iOS游戏引擎 Sparrow Framework.zip

    iOS游戏引擎 Sparrow Framework ,Sparrow是一个基于Objective-C的开源的游戏引擎,完全为iOS设备构建。该项目可以让开...

    Sparrow Search algorithm (SSA).zip

    从麻雀的群体智慧、觅食行为和反捕食行为出发,提出了一种新的群体优化算法——麻雀搜索算法。在19个基准函数上进行了实验,测试了SSA算法的性能,并与其他算法如灰狼优化算法(GWO)、引力搜索算法(GSA)和粒子群...

    sparrow:一种c风格的玩具语言,用llvm实现

    #Sparrow Sparrow 是一种 C 风格的玩具语言,使用实现。 它也是一种类似于JAVA的面向对象语言。 它集成了 Boehm GC。 程序将被编译为本地可执行文件。 ##Requirement flex 2.5+ 野牛 2.4+ 3.3 操作系统 linux x86_...

    Sparrow MAC

    Sparrow-v1-6-4.dmg 在mac上安装的sparrow,一个邮件客户端。

    麻雀算法优化Sparrow-Search-Algorithm-Matlab-main.zip

    麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种基于生物行为的优化算法,灵感来源于麻雀群体的行为特征,如觅食、避险和集体防御等。这种算法在解决复杂优化问题时展现出强大的能力,特别是在工程领域和数据...

    Sparrow Framework for iOS V0.9

    Sparrow Framework是一款专为iOS平台设计的2D游戏引擎,它为开发者提供了高效、便捷的游戏开发环境,旨在让Xcode的工作流程如同Flash一样流畅。在Sparrow Framework V0.9版本中,我们可以发现许多有助于提升开发效率...

    前端基础库Sparrow.js.zip

    Sparrow.js是一个短小精悍的前端基础库,它包含对DOM、CSS基本操作、多平台浏览器移动设备判断、Cookies操作、事件的绑定、日期、数字、字符串相关判断、以及浏览器自身函数不足所扩展的一系列功能。开发技术说明...

    Python库 | sparrow-tool-0.3.5.dev2.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:sparrow-tool-0.3.5.dev2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    sparrow:Sparrow是一种增强算法实现,已针对大型数据集和_或有限的内存设置中的训练进行了优化

    麻雀是增强的一种体现,它针对大型数据集的训练以及有限内存设置的训练进行了优化。 优化涉及两种技术:提早停止采样和选择性采样。 请阅读以获取更多详细信息。 在描述了最新的实现 文档: : 先决条件 上的说明...

    sparrow:麻雀静态分析仪

    麻雀 Sparrow是最新的静态分析器,旨在验证C源代码中不存在致命错误。 Sparrow是基于“抽象解释”框架进行设计的,并且在设计上进行了合理的分析。... 安装Sparrow的最简单方法是使用OPAM 。 克隆源代码后,运

    sparrowjs是一个前端基础库精简版的jQuery精简版lodash的合体

    在JavaScript开发-框架这个标签下,Sparrow.js作为一款基础库,可以看作是介于全功能框架和原生JavaScript之间的一种解决方案。它不具备大型框架如React或Vue的复杂性,但仍然能提供一些基本的抽象和便利,使得...

    Sparrow OS 设计文档连载九:File System

    Sparrow OS是一款由赵凤阳先生(笔名Michael Zhao)历时一年半开发的小型嵌入式操作系统。本文档作为系列连载文档的第九部分,主要介绍Sparrow OS中的文件系统(File System)相关设计和实现。文件系统作为操作系统的...

Global site tag (gtag.js) - Google Analytics