当前位置: 首页 > 专利查询>北京大学专利>正文

MapReduce中任务的调度方法和流水化执行方法技术

技术编号:12437025 阅读:90 留言:0更新日期:2015-12-04 00:52
本发明专利技术公布一种MapReduce系统中的任务调度方法和流水化执行方法,将有依赖关系的任务根据依赖关系和优先程度进行任务调度,使得有依赖关系的任务之间的执行重叠最大化:任务之间的依赖关系用DAG关系图表示,根据关键路径算法获得关键任务,通过流水化任务执行方法执行当前任务运行队列中的任务:执行上游map任务;进入上游reduce阶段;当输出第一个block时启动下游map阶段,分发一个map任务,同时设置下游任务map数量为最大数值;上游任务完成时设置下游任务map数量为正确数值;下游任务继续执行map任务和reduce阶段至执行完成。本发明专利技术方法可提高系统的资源利用率和程序的执行效率,提升系统运行性能。

【技术实现步骤摘要】

本专利技术属于计算机软件应用
,涉及分布式计算框架MapReduce系统中的任务执行和调度,尤其涉及一种MapReduce系统中的有依赖关系的任务之间的任务调度方法和流水化执行方法。
技术介绍
云计算是当前工业界和学术界关注的热点,它改变了传统上由用户提供和维护计算资源的模式,改由云计算厂商集中化管理计算资源,用户可以根据不同的应用场景,按需获取相应的资源。如何利用资源集中化带来的并行性、容错性等特性,高效的提供云计算服务,成为了云计算模式最重要的研究问题之一。MapReduce分布式计算框架是Google公司提出的软件架构,借鉴了函数式编程的思想,高效地进行大规模数据集的分布式计算。MapReduce框架以其优异的容错性、计算的高效性和使用的便捷性,迅速成为云计算环境下应用最广泛的分布式计算架构。尤其是2005年ApacheSoftwareFoundation引入基于MapReduce框架开发的Hadoop开源系统以来,MapReduce架构得到了更大的发展,利用MapReduce思想构建的分布式计算系统已经被Google、微软、Facebook、Yahoo!以及国内的腾讯、百度、阿里云等软件公司和互联网公司在各自的私有云集群中深度采用,并且也成为了当前部署云计算集群进行分布式计算的首选软件架构,在科学计算、人工智能、数据挖掘、信息处理等各个领域都得到了广泛的应用。一个典型的MapReduce系统中有一个Master节点和多个Worker节点。Master节点负责接收用户提交的任务,向Worker节点分发执行任务,并且管理所有的Worker节点。Worker节点是负责执行由Master下发的map和reduce任务。MapReduce共分为三个阶段,分别为Map阶段、Shuffle阶段和Reduce阶段,其中,Map阶段是负责将所有的输入数据(键值对的形式)通过用户的map函数转化为中间结果(也是键值对的形式),这个过程是分布式进行的,由Master下发Map任务,Worker节点负责执行具体的Map任务。Shuffle阶段是在Map和Reduce中间的一个过程,因为reduce的处理的数据是按照键值分区的,所以需要shuffle阶段对map产生的中间结果的数据按照键值进行排序。每一个reduce都知道自己要处理的键值的区间,所以每一个reduce任务都会去每一个map任务处拉取属于自己键值区间的数据,这样每个reduce任务就会有对应map任务数量那么多的小的分区数据,然后全部拉取到reduce任务本地后,再将它们进行合并。这个拉取数据和合并数据的过程就是shuffle过程。Reduce阶段就是将map产生的中间结果(键值对)转化为最终的输出数据(键值对)。具体的转化方法是根据用户写的reduce函数。Reduce任务也是由Master下发的,由Worker节点进行分布式执行的。一个具体的任务执行过程如下:(一)用户上传数据到分布式文件系统中(一般是GFS,开源实现为HDFS),并且向MapReduce系统提交一个Job。(二)MapReduce的Client将输入数据划分成多个分片(split,每个split默认是64M大小),并生成分片的信息(包括存储位置,开始位置,以及split的真实大小),然后把任务和分片信息提交给Master节点。(三)Master节点根据分片信息,产生多个Map任务,并将这些Map任务调度到不同的节点并行执行。(四)每个Map任务会根据用户定义的map和combine函数将输入的key-value对转换为中间结果的key-value对;然后根据用户定义的分区函数,将中间结果按照key划分成不同的分区。并将这些分区内容存放到本地磁盘上。(五)当Map任务完成一定比例之后,Master节点会开始分发Reduce任务。(六)每一个Reduce任务从每一个Map任务处拷贝自己的分区数据,当所有的Map任务都完成之后,Reduce任务用多路归并方法根据中间数据的key将多个Map取来的数据合并成一个输入数据流,然后根据用户定义的reduce函数,将中间结果表示的key-value类型转换成最终的key-value表示,最后将数据输出到用户指定的分布式文件系统的目录中。在上述的任务执行过程中,Master没有指定任务的执行计划,没有任务调度,而只是简单的按照用户提交的顺序将任务依次执行,而任务提交的顺序是由用户来决定的。另外,在MapReduce中,任务在开始执行之前,其所需要的数据必须是准备好任务才可以执行。这是因为任务执行之前必须知道输入数据的split信息。当遇到了有依赖关系的一系列任务的时候(比如迭代式的机器学习库、复杂的分布式数据库查询系统hive或pig等),任务的执行就只能是:一个任务在执行之前就要等待与该任务有依赖关系的所有的其他任务都已经执行完毕,该任务才可以执行。因此,针对多任务的应用,现有任务执行过程不能进行任务调度,也无法提供流水化(pipeline)的任务执行优化,难以最大化有依赖的任务之间的执行重叠。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种MapReduce系统中的有依赖关系的任务之间的任务调度方法和流水化执行方法,将有依赖关系的任务根据依赖关系和优先程度进行任务调度,使得有依赖关系的任务之间的执行重叠最大化,提供流水化(pipeline)的任务执行优化。本专利技术的原理是:MapReduce框架中的任务依赖关系包括:第一种依赖关系是任务B的输入数据是任务A的输出数据;第二种是任务B在Map阶段或者Reduce阶段需要在代码中直接对A的输出文件进行读取,本文定义第二种依赖关系为硬依赖关系。MapReduce框架本身不维护任务之间的依赖关系,所以在所有的有依赖关系的任务之间,需要通过输出文件来进行同步。本专利技术提供的任务调度方法采用DAG关系图(Directedacyclicgraph,有向无环图)表示任务之间的依赖关系;MapReduce框架中的Master根据任务时间预测方法预测得到任务的执行时间;再根据DAG图和关键路径算法,获得关键路径和关键任务;根据优先程度找到一个任务添加到当前任务运行队列中,并更新该组任务的DAG关系图。为提供依赖任务的流水化执行过程,需要了解一个任务在执行完毕之前的输出数据在哪里和以哪种形式存在、决定该任务应该将输出数据流水给下游的哪个任务,并使得下游的任务在一个不断增长的数据上进行执行过程,而保证下游任务执行的正确性并提供容错性。MapR本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/CN105117286.html" title="MapReduce中任务的调度方法和流水化执行方法原文来自X技术">MapReduce中任务的调度方法和流水化执行方法</a>

【技术保护点】
一种MapReduce系统中的任务调度方法,所述任务调度方法将有依赖关系的任务根据依赖关系和优先程度进行任务调度,使得有依赖关系的任务之间的执行重叠最大化,具体包括如下步骤:1)用户提交一组任务到MapReduce框架系统中,设定当前任务运行队列为空;2)该组任务之间的依赖关系用DAG关系图表示;MapReduce的Master节点更新得到该组任务的DAG关系图;3)Master节点根据任务时间预测方法预测得到该组任务中每一个任务的执行时间;4)当当前任务运行队列为空时,若DAG关系图中也为空,则系统执行完毕,结束操作;若DAG关系图中不为空,则根据DAG关系图和关键路径算法获得关键路径和关键任务,根据优先程度从DAG关系图中找到一个或多个任务添加到当前任务运行队列中,并从DAG关系图中将所述一个或多个任务删除,转入执行步骤5);5)执行当前任务运行队列的队首任务,并将该任务从当前任务运行队列中删掉,再转入步骤4)。

【技术特征摘要】
1.一种MapReduce系统中的任务调度方法,所述任务调度方法将有依赖关系的任务根
据依赖关系和优先程度进行任务调度,使得有依赖关系的任务之间的执行重叠最大化,
具体包括如下步骤:
1)用户提交一组任务到MapReduce框架系统中,设定当前任务运行队列为空;
2)该组任务之间的依赖关系用DAG关系图表示;MapReduce的Master节点更新得
到该组任务的DAG关系图;
3)Master节点根据任务时间预测方法预测得到该组任务中每一个任务的执行时间;
4)当当前任务运行队列为空时,若DAG关系图中也为空,则系统执行完毕,结束
操作;若DAG关系图中不为空,则根据DAG关系图和关键路径算法获得关键路径和关
键任务,根据优先程度从DAG关系图中找到一个或多个任务添加到当前任务运行队列中,
并从DAG关系图中将所述一个或多个任务删除,转入执行步骤5);
5)执行当前任务运行队列的队首任务,并将该任务从当前任务运行队列中删掉,再
转入步骤4)。
2.如权利要求1所述MapReduce系统中的任务调度方法,其特征是,步骤2)中的
任务之间的依赖关系为第一种依赖关系。
3.如权利要求1所述MapReduce系统中的任务调度方法,其特征是,步骤3)所述
任务时间预测方法采用局部权重线性回归方法,具体通过式2计算得到预测任务执行的时
间:
Tj=J*Inver(X*(W*Trans(X)))*(Y*(W...

【专利技术属性】
技术研发人员:李本超陈琪姚金宇肖臻
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1