1、10 优先级的计算方法以及应对超时现象的方法。另外还描述了调度器的设计结构和实现方式, 并通过实验验证调度策略的有效性。 关键词:计算机应用技术;Hadoop;任务调度;最低松弛度优先LLF Scheduler in Hadoop 15 Jing Chao, Lv Yuqin, Hou Bin (School of Electronic Engineering, Beijing University of Posts and Telecommunications, Beijing 100876) Abstract: Hadoop is an excellent open-source dist
2、ributed computing platform. The Hadoop can take use of different configurations of computers to build low-cost, high-performance distributed 20 clusters, with fault tolerance and scalability. Hadoop cluster can run hundreds of jobs that sharin system resources, so scheduling becomes a problem. This
3、paper proposes a scheduling algorithm based on Least Laxity First(LLF) in Hadoop in order to achieve fairness and scheduling special preemption. This article discusses the details of the scheduling algorithm, including the representation of laxity, priority calculation method and the method of respo
4、nse timeouts. It also 25 describes the design and implementation of the scheduler, and shows experiments to verify the effectiveness of scheduling strategies. Key words: computer application technology; Hadoop; task scheduling; Least Laxity First 0 引言 130 Hadoop 是开源的分布式计算平台,实现了 MapReduce模型。MapReduce
5、 是 Google 提 出的一个用于大规模计算的分布式编程模型。MapReduce 隐藏了分布式编程的底层细节, 让没有并行编程经验的开发人员也能够开发分布式程序 。在该模型中,分布式运算抽象为 Map 和 Reduce 两个步骤。开发者只需要实现 Map 和 Reduce 函数的逻辑,然后提交给 MapReduce 运行环境,计算任务便会在计算机集群上自动、并行地调度执行。35 MapReduce 架构中包含一个 JobTracker 和若干个 TaskTraker。JobTracker 负责将作业拆 分成 Map 任务和 Reduce 任务,分发给不同的 TaskTraker 去执行,并监
6、视 Task 的的执行情 况。默认情况下,一个 TaskTracker 可以同时运行两个 Map 任务或 Reduce 任务,这样一个 能够运行一个任务的资源称为 Slot。由于 Hadoop 集群内的所有作业共享资源,所以需要由调度器决定作业获得资源的顺序。40 Hadoop 默认的调度方法是先进先出(FIFO)策略,作业按照到达的顺序被提交。 公平调度2算法(Fair Scheduler)目的是让所有的作业都获得相同资源。调度器将所有 资源分为若干个池(Pool),并为每个作业池分配相同的资源。默认情况下,每个用户分属作者简介:荆超(1987-),男,硕士研究生,主要研究方向:云计算、数据
7、仓库. E-mail: jingchao1024- 1 - 在不同的作业池中,从而使得每个用户获得等量的资源。3Malgorzata 和 Ian 为了增加系统执行效率,设计了一种限定作业执行时间的调度器。 45 根据作业已完成部分的运行速度及预先设定的完成时间,来估计作业的资源需求量,按照这 个需求量决定作业执行的优先级。r4基于 Deadline 还有另外一种调度算法 Constraint Schedule。在该算法中,作业的 Deadline 由用户指定。系统首先根据集群中最慢的节点计算出在规定 Deadline 内完成该作业 至少需要的 Slot 个数,并把这个数目的 Slot 分配给该
8、作业。如果还有空闲 Slot,则尽量安 50 排更多的作业运行。Laxity First, LLF)是广为人知的动态任务调度算法,已经被 最低松弛度优先(Least 56用于多核 CPU 环境和并行计算环境,但是在 MapReduce 环境还没有相关研究。本文将提出一种 Hadoop 环境下的 LLF 任务调度算法,实现调度器的公平性并提供特殊 抢占功能。文章结构安排如下:第一部分将论述 LLF 调度器的原理。第二部分描述调度器 55 的实现方法。第三部分对 LLF 调度器进行实验验证。总结部分将概况本文内容并提出对未 来工作的展望。1 LLF 调度算法 1.1 松弛度的表示 LLF 算法根据
9、任务紧急的程度来计算作业的优先级。作业的紧急程度越高,其优先级就 60 越高。例如,要求一个作业在 300ms 的时候执行完,其本身运行需要 100ms,那么这个作 业的松弛程度就是 200ms,如图 1 所示。作业开始 时间 作业运行时间 松弛度当前时间 作业预计完成 时间 图 1 松弛度的表示 65 我们的 LLF 算法设计为可抢占式的,在每次调度的时候,即便有已经开始的作业,高优先级的作业也可以在它们完成之前先获取资源。所以作业的运行时间并不是集中的,有可 能被打断,图 1 所述的松弛度需要进行转换。如果用户不指定预完成时间,那么系统在一个合理的时间内完成该作业即可。这个合理70 的时间
10、应当是根据系统的处理速度和提交作业的作业规模预计出来的。我们以这个合理完成 时间作为预计完成时间,用这个值减去当前时间作为松弛度计算的依据,如图 2 所示。图 2 松弛度的变换表示 - 2 - 修改后的松弛度计算方法如式 4-2。 start estimated curr L= T+ T? T(2)mmm m75 startcurrestimated TTT是当前时间。我们将是作业开始的时间,是作业估计运行时间, m mm start estimatedT+ T作为作业预计完成时间,如式 4-3 所示: m m deadline start estimated(3)=+ TTT mm m如果我
11、们已知一个作业的任务量和系统的执行速度,那么就可以很容易地估算出作业的 80 运行时间。作业的任务量取决于计算逻辑的复杂度以及数据源的规模。MapReduce 模型设 计为应对海量数据,但对数据的计算逻辑都很简单,所以系统中的作业的执行时间主要取决 estimated T 于要处理的数据量。体现在式 3 中就是,作业规模越小,其也越小。同一时间开始 m 的作业,松弛度与作业规模成反比。在 MapReduce 模型中,数据 Block 的形式存储,默认的 Block 大小为 64MB,Block 的 85 个数反应了数据的规模。默认情况下,一个 Block 在 Map 端对应一个 Split 输
12、入,并产生一 个 Map 任务。所以我们可以根据 Map 任务的个数来衡量原始数据量。由于 Hadoop 集群的异构性,其执行速度很难从理论上计算出来,所以我们通过实验的 方式测定出系统的吞吐量。例如,对 100G 的示例数据进行计算,这个作业标记为 e,取出 运算过程中 Map 的个数,并记录作业执行时间,用这两个值就能估算出系统的吞吐量,如 exec 90 是该作业的执行时间。 T是作业 e 产生的 Map 任务个数, M 4。其中, e式 eM e S(4) =base exec T e 但是 MapReduce 作业的任务量不仅取决于 Map 任务,后序的 Shuffle 过程和 Re
13、duce 过 程占用了更多的执行时间。Shuffle 过程中的数据传输是通过网络完成的,而网络传输的速 度远小于本地磁盘的读写速度,网络带宽也是 Hadoop 集群最稀缺的资源,所以这一步的传 输量很大程度上决定了作业的运行时间。由于无法事先预测某一作业的 Shuffle 量,所以我 95 们执行不同 Shuffle 比例的 MapReduce 作业,然后将各种作业的平均执行时间作为系统执行 速度的计算依据。我们选取三种典型的计算:词频统计(Word Count),全搜索正则表达式(Grep)和排 序(Sort)。Word Count 统计一篇文本中出现过的词汇及其出现的次数,在 Shuffl
14、e 阶段只 需传输这样的键值对,而且 Map 阶段对中间结果进行 Combine 操作,使得网 络传输量非常小。这样的作业我们称之为 Weak-Shuffle 型作业。 100 Sort 对整个记录数据按照某个字段进行排序操作,并将拍好序的结果输出。所有的数据 都要从 Map 任务输入给 Reduce 任务,需要大量的网络传输。我们称这种作业类型为 Strong-Shuffle 型。 Grep 在原始文档中按正则表达式查找,并且打印匹配的行。Shuffle 阶段所传输的数据 取决于文本中有多少记录满足正则表达式。这样的作业我们成为 Dithering-Shuffle 型作业。故式 4 变为式 5。105 Be ?exec Te?E eS, E = WordCount ,Grep, Sort (5)= base | E | - 3 - Sm 6根据 ,就可以估算出某个作业 的预完成时间,如式 : base B estimated m110 (6) T = m Sbase 1.2 优先级的确定由于异构环境会造成很多不确定性,很有可能造成超时现象。即使有多个任务超时,它 L为 们的紧张程度也应该有所同。超过
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1