一种处理串行任务的数据处理装置及方法.pdf

上传人:a*** 文档编号:6147630 上传时间:2019-04-19 格式:PDF 页数:25 大小:1.18MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410069692.5

申请日:

2014.02.27

公开号:

CN103838626A

公开日:

2014.06.04

当前法律状态:

终止

有效性:

无权

法律详情:

专利权的视为放弃IPC(主分类):G06F 9/46放弃生效日:20180601|||实质审查的生效IPC(主分类):G06F 9/46申请日:20140227|||公开

IPC分类号:

G06F9/46

主分类号:

G06F9/46

申请人:

华为技术有限公司

发明人:

刘衍初; 刘超

地址:

518129 广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

北京中博世达专利商标代理有限公司 11274

代理人:

申健

PDF下载: PDF下载
内容摘要

本发明实施例公开了一种处理串行任务的数据处理装置及方法,能够在数据处理的过程中减少从分布式系统中的各个节点设备的磁盘上读取输出结果的次数,从而减少处理大量数据所需的时间以及所占用的网络资源。本发明的方法包括:获取至少两个MapReduce任务,至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值;合并至少两个MapReduce任务得到目标MapReduce任务;执行目标MapReduce任务,并得到目标MapReduce任务的输出结果。

权利要求书

权利要求书
1.  一种处理串行任务的数据处理装置,其特征在于,包括:
任务提取模块,用于获取至少两个MapReduce任务,所述至少两个MapReduce任务按照执行先后顺序串行排列所述至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值;
合并模块,用于合并所述至少两个MapReduce任务得到目标MapReduce任务;
执行模块,用于执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果。

2.  根据权利要求1所述的处理串行任务的数据处理装置,其特征在于,所述合并模块包括:
分析单元,用于从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map任务;
合并单元,用于合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值;
目标任务生成单元,用于利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。

3.  根据权利要求2所述的处理串行任务的数据处理装置,其特征在于,所述执行模块包括:
执行单元,用于执行所述合并后的Map任务;
发送单元,用于将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
接收单元,用于接收所述用于执行Reduce任务的设备发送的所述输出结果,所述输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。

4.  根据权利要求2或3所述的处理串行任务的数据处理装置,其特征在于,所述合并单元,具体用于:
获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;
先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。

5.  一种处理串行任务的数据处理方法,其特征在于,包括:
获取至少两个MapReduce任务,所述至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值;
合并所述至少两个MapReduce任务得到目标MapReduce任务;
执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果。

6.  根据权利要求5所述的处理串行任务的数据处理方法,其特征在于,所述合并所述至少两个MapReduce任务得到目标MapReduce任务,具体包括:
从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map 任务;
合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值;
利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。

7.  根据权利要求6所述的处理串行任务的数据处理方法,其特征在于,所述执行目标MapReduce任务,得到所述目标MapReduce任务的输出结果,包括:
执行所述合并后的Map任务,并将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
接收所述用于执行Reduce任务的设备发送的所述输出结果,所述输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。

8.  根据权利要求6或7所述的处理串行任务的数据处理方法,其特征在于,所述合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,具体包括:
获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;
先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。

说明书

说明书一种处理串行任务的数据处理装置及方法
技术领域
本发明涉及电子信息技术领域,尤其涉及一种处理串行任务的数据处理装置及方法。
背景技术
目前,由于数据规模越来越大,为了有效处理大规模数据,已经发展出了很多适用于大数据处理的技术。其中,MapReduce是一种常用的用于处理大规模数据的技术。在应用了MapReduce的编程模型中,需要使用Map(映射)函数和Reduce(规约)函数。其中,map函数:接受一个键值对(key-value pair),产生一组中间键值对,并将map函数产生的中间键值对里键相同的值传递给一个reduce函数。reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。
在实际应用中,一个MapReduce任务可以由一个基于Map(映射)函数的Map任务和一个基于Reduce(规约)函数的Reduce任务组成,例如:在HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)技术中,经常需要执行串行的多个MapReduce任务,对于每一个MapReduce任务,需要先执行Map任务,并将输出结果存储到分布式系统中的各个节点设备的磁盘上。之后再通过采用HTTP协议从分布式系统中的各个节点设备上远程拷贝每一个Map任务执行完毕后的输出结果,再对该输出结果进行执行Reduce任务。并重复这个过程,直至将所有的MapReduce流程依次执行完毕。
由此可见,执行一个MapReduce任务需要从分布式系统的节点设备的磁盘上读取至少一次输出结果。如果执行多个串行MapReduce任务过程中,就需要占用很多时间和网络带宽分多次从分布式系统中的各个节点设备的磁盘上读取输出 结果,从而增加处理大量数据所需的时间以及网络资源。
发明内容
本发明的实施例提供一种处理串行任务的数据处理装置及方法,能够在数据处理的过程中减少从分布式系统中的各个节点设备的磁盘上读取输出结果的次数,从而减少处理大量数据所需的时间以及所占用的网络资源。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供处理串行任务的数据处理装置,其特征在于,包括:
任务提取模块,用于获取至少两个MapReduce任务,所述至少两个MapReduce任务按照执行先后顺序串行排列所述至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值;
合并模块,用于合并所述至少两个MapReduce任务得到目标MapReduce任务;
执行模块,用于执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果。
结合第一方面,在第一方面的第一种可能的实现方式中,所述合并模块包括:
分析单元,用于从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map任务;
合并单元,用于合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行 的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值;
目标任务生成单元,用于利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述执行模块包括:
执行单元,用于执行所述合并后的Map任务;
发送单元,用于将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
接收单元,用于接收所述用于执行Reduce任务的设备发送的所述输出结果,所述输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。
结合第一方面的第一或二种可能的实现方式,在第三种可能的实现方式中,所述合并单元,具体用于:
获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;
先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。
第二方面,本发明的实施例提供一种处理串行任务的数据处理方法,其特征在于,包括:
获取至少两个MapReduce任务,所述至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值;
合并所述至少两个MapReduce任务得到目标MapReduce任务;
执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果。
结合第二方面,在第二方面的第一种可能的实现方式中,所述合并所述至少两个MapReduce任务得到目标MapReduce任务,具体包括:
从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map任务;
合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值;
利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述执行目标MapReduce任务,得到所述目标MapReduce任务的输出结果,包括:
执行所述合并后的Map任务,并将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
接收所述用于执行Reduce任务的设备发送的所述输出结果,所述输出结果 由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。
结合第二方面的第一或二种可能的实现方式,在第三种可能的实现方式中,其特征在于,所述合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,具体包括:
获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;
先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。
第三方面,本发明的实施例提供一种处理串行任务的计算设备,其特征在于,所述计算设备至少包括:处理器和通信接口,所述处理器和通信接口通过所述计算设备的总线相连接,所述通信接口用于所述计算设备与外部存储设备进行数据传输;
所述处理器,用于获取至少两个MapReduce任务,并合并所述至少两个MapReduce任务得到目标MapReduce任务,所述至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值;
所述处理器,还用于执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果,并将所述输出结果发送至所述通信接口;
所述通信接口,用于向所述外部存储设备发送所述输出结果。
结合第三方面,在第三方面的第一种可能的实现方式中,所述处理器,具体用于从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map 任务;并根据所述至少两个MapReduce任务相互之间的信息依赖关系,合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值;并利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。
结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述处理器,具体用于执行所述合并后的Map任务,并将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
接收所述用于执行Reduce任务的设备发送的所述输出结果,所述输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。
结合第三方面的第一或二种可能的实现方式,在第三种可能的实现方式中,所述处理器,具体用于获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;并先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。
本发明实施例提供的处理串行任务的计算设备、数据处理装置及方法,能够合并多个串行MapReduce任务,并执行合并得到的MapReduce任务。在合并得到的MapReduce任务中,只需执行一次Reduce任务。因此本发明通过合并执行MapReduce任务减少了执行串行MapReduce任务时所需Reduce任务的次数,因此 节省了执行Reduce任务过程中从分布式系统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽,从而减少处理大量数据所需的时间以及网络资源。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种处理串行任务的数据处理方法的流程图;
图1a、图1b为本发明实施例提供的具体实例的逻辑示意图;
图2为本发明实施例提供的另一种处理串行任务的数据处理方法的流程图;
图3为本发明实施例提供的再一种处理串行任务的数据处理方法的流程图;
图4为本发明实施例提供的一种具体实例的示意图;
图5为本发明实施例提供的一种处理串行任务的计算设备的结构示意图;
图6为本发明实施例提供的一种处理串行任务的数据处理装置的结构示意图;
图7为本发明实施例提供的另一种处理串行任务的数据处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,本发明实施例提供的实施例可以由任何一种具有数据处理和传输功能的计算设备执行。比如:服务器、计算机或终端设备等。具体的,本实施例的实施过程可以利用现有的实现MapReduce技术的硬件环境,并可以将经过本实施例的方法处理后的数据存储在分布式系统上。
本发明实施例提供一种处理串行任务的数据处理方法,如图1所示,包括:
101,计算设备获取至少两个MapReduce任务。
其中,至少两个MapReduce任务按照执行先后顺序串行排列;当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值。当计算设备开始运行M/R(MapReduce框架)并开始处理MapReduce任务时,获取至少两个按照执行先后顺序串行排列MapReduce任务,例如:计算设备获取的是一连串用于实现计算过程的MapReduce任务,其中前一个MapReduce任务的处理结果可以是之后一个或多个的MapReduce任务的输入值。
102,合并所述至少两个MapReduce任务得到目标MapReduce任务。
在本实施例中,合并所述至少两个MapReduce任务的过程可以理解为将至少两个MapReduce任务各自的Map任务进行合并,例如:
如图1a所示,其中“第一映射任务”表示Map1任务,“第二映射任务”表示Map2任务,…,“第五映射任务”表示Map5任务。“化简任务”表示Reduce任务。MapReduce1-MapReduce2-…-MapReduce N为串行的任务,N为大于等于3的整数。MapReduce1任务包括执行Map1任务后输出结果Output1。MapReduce2任务包括执行Map2任务后输出结果Output2,并且需要将Output1作为执行Map2过程的输入参数。…。MapReduce N任务包括执行Map N任务后输出结果Output N,并且需要将Output N-1作为执行Map N过程的输入参数。则计算设备将Map1任务、Map2任务、…Map N任务进行合并。并生成一个新的Map任务,称之为目标Map任务,执行目标Map任务的后的输出结果即为Output N。执行目标Map任务并输出了Output N后,再将Output N发送至用于执行Reduce任务的设备,这样就实现了计算设备将MapReduce1、MapReduce2、…、MapReduce N进行合并得到目标MapReduce任务,而目标MapReduce任务即为目标Map任务+Reduce任务的组合。比如:
MapReduce1-MapReduce2–MapReduce3–MapReduce4–MapReduce5为用于实现累加计算的串行任务。其中原始数值为10,MapReduce1任务为用于在原始数值上加1的任务,MapReduce1任务的Map1任务用于实现“+1”。MapReduce2任务为用于在原始数值上加2的任务,MapReduce2任务的Map2任务用于实现“+2”。MapReduce3任务为用于在原始数值上加-1的任务,MapReduce3任务的Map3任务用于实现“-1”。MapReduce4任务为用于在原始数值上加0的任务,MapReduce4任务的Map4任务用于实现“+0”。MapReduce5任务为用于在原始数值上加1的任务,MapReduce5任务的Map5任务用于实现“+1”。
若按照现有技术中的方案,则对于MapReduce1-MapReduce2–MapReduce3–MapReduce4–MapReduce5的串行任务的执行过程如图1b所示,其中,“任务一”表示MapReduce1、“任务二”表示MapReduce2、…、“任务五”表示MapReduce5;“第一映射任务”表示Map1任务,“第二映射任务”表示Map2任务,…,“第五映射任务”表示Map5任务。“化简任务”表示Reduce任务。
现有技术中的执行过程包括:
执行MapReduce1,读取原始数值得到输入值10,执行Map1任务得到输出结果11,并将输出结果11发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
执行MapReduce2,从分布式系统上读取S1的输出结果11作为输入值,执行Map2任务得到输出结果13,并将输出结果13发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
执行MapReduce3,从分布式系统上读取S2的输出结果13,执行Map3任务得到输出结果12,并将输出结果12发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
执行MapReduce4,从分布式系统上读取S3的输出结果12,执行Map4任务得到输出结果12,并将输出结果12发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
执行MapReduce5,从分布式系统上读取S4的输出结果12,执行Map5任务得到输出结果13,并将输出结果15发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
而在本实施例中,计算设备确定了需要合并的串行排列的MapReduce任务后,可以将所有的MapReduce任务合并为一个MapReduce任务,比如:合并 MapReduce1任务、MapReduce2任务、MapReduce3任务、MapReduce4任务和MapReduce5任务后,得到第一目标MapReduce任务。第一目标MapReduce任务的Map任务为Map M。其中由Map1至5直接在计算设备的内存中顺序执行“+1+2-1+0+1”,得到Map M任务为“+3”。则执行第一目标MapReduce任务的输出结果Output M=10+3=13。
或者,计算设备确定了需要合并的串行排列的MapReduce任务后,也可以将所有的MapReduce任务当中的一部分合并为一个MapReduce任务,比如:合并MapReduce1任务、MapReduce2任务、MapReduce3任务、MapReduce4任务得到第二目标MapReduce任务,第二目标MapReduce任务的Map任务为Map M’。其中由Map1至4进行直接在计算设备的内存中顺序执行“+1+2-1+0”,得到Map M任务为“+2”。
103,执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果。
本发明实施例提供的处理串行任务的数据处理方法,能够合并多个串行MapReduce任务,并执行合并得到的MapReduce任务。在合并得到的MapReduce任务中,只需执行一次Reduce任务。因此本发明通过合并执行MapReduce任务减少了执行串行MapReduce任务时所需Reduce任务的次数,因此节省了执行Reduce任务过程中从分布式系统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽,从而减少处理大量数据所需的时间以及网络资源。
具体的,本发明实施例可以包括如图2所示的方法:
201,计算设备获取至少两个MapReduce任务。
其中,至少两个MapReduce任务按照执行先后顺序串行排列;当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后 一个MapReduce任务的输入值。当计算设备开始运行M/R(MapReduce框架)并开始处理MapReduce任务时,对于待处理的MapReduce任务,从中获取至少两个按照执行先后顺序串行排列MapReduce任务,例如:计算设备获取的是一连串用于实现计算过程的MapReduce任务,其中前一个MapReduce任务的处理结果可以是之后一个或多个的MapReduce任务的输入值。
202,从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map任务。
在本实施例中,可以在成串行关系的一连串的MapReduce任务中,选取一部分MapReduce任务进行合并,比如图4所示,其中,“任务一”表示MapReduce1任务、“任务二”表示MapReduce2任务、…、“任务五”表示MapReduce5任务。可以只选取这5个MapReduce任务中的3个(A部分)或是2个(B部分)所示的MapReduce任务。也可以选取全部5个MapReduce任务(C部分),即将所有的MapReduce任务都进行合并。
203,合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码。
其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值。
204,利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。
例如:
①单个Map任务的代码信息为:


②合并上述代码可以得到合并后的Map任务的代码为:


计算设备在获取了合并后的Map任务的代码信息后,可以利用合并后的Map任务的代码信息生成一个目标MapReduce任务,在目标MapReduce任务中,Map任务的代码信息即为合并后的Map任务的代码信息。
205,执行所述合并后的Map任务,并将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备。
206,接收所述用于执行Reduce任务的设备发送的所述输出结果。
其中,输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。
在本实施例中,203的具体实施方式,如图3所示,可以实现为:
301,获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码。
例如:在上面实施例中所列举的①为一个MapReduce任务中的Map任务的代码信息,其中setup()为环境准备操作代码。map1()为逻辑操作代码。cleanup()为环境清理操作代码。
计算设备可以一次执行302a、302b、302c,从而完成对于每一个Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码的编译。
302a,编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;
302b,编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;
302c,编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码。
根据编译后的每一个所述所获取的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码,将所述所获取的Map任务合并得到一个Map任务,并将合并得到的这一个Map任务作为所述合并后的Map任务。
计算设备对于准备被合并的每一个MapReduce任务的Map任务中的环境准备操作代码、逻辑操作代码和环境清理操作代码进行编译,并将每一个MapReduce任务的Map任务经过编译后的环境准备操作代码、逻辑操作代码和环境清理操作代码合并,得到例如下面所示的合并后的Map任务的代码:

从而实现对于多个Map任务的合并,并得到合并后的Map任务,再对应合并后的Map任务设置Reduce任务,从而得到目标MapReduce任务。
本发明实施例提供了合并多个串行MapReduce任务的具体实施方式,通过对 MapReduce任务的Map任务进行合并,从而实现合并得到的MapReduce任务。在执行合并得到的MapReduce任务时,执行完合并后的Map任务后只需对应于合并后的Map任务的Reduce任务,从而减少了Reduce任务的执行次数。因此本发明通过合并执行MapReduce任务减少了执行串行MapReduce任务时所需Reduce任务的次数,因此节省了执行Reduce任务过程中从分布式系统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽,从而减少处理大量数据所需的时间以及网络资源。
在实际应用中,存在总数量较大的MapReduce任务的串行序列,比如100个成串行关系的MapReduce任务,其中的第2-10个MapReduce任务,以及第20-25个MapReduce任务,计算过程比较复杂且处理过程中需要读写的数据量很大,而其他的MapReduce任务则很简单,所占用的计算资源和所需读写的数据量很小,则计算设备可以合并第2-10个MapReduce任务,以及合并第20-25个MapReduce任务,从而由原来的100个成串行关系的MapReduce任务精简到87个MapReduce任务,其中2个是合并得到的MapReduce任务。这样既可以减少从分布式系统上读写大量数据,同时由于减少了所要合并的MapReduce任务的数量,从而缩短了计算设备合并MapReduce任务所需的时间,从而也可以提高总数量较大的MapReduce任务的串行序列的处理效率。
在本发明实施例中还提供了一种处理串行任务的计算设备50,如图5所示,该计算设备50可以包括:至少一个处理器51,例如CPU,至少一个通信接口54。可选的,还可以包括者其他用户接口53,存储器55。总线52用于实现这些组件之间的连接通信。可选的,用户接口53,可以包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。通信接口54,可以是一种网络接口,能够用于计算设备50与分布式存储系统之间的数据传输。 存储器55可能包含计算设备50上的高速RAM存储器,也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器55可选的可以包含至少一个位于远离前述处理器51的存储装置。
在一些实施方式中,存储器55存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统551,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
应用程序552,包含各种应用程序,用于实现各种应用业务。应用程序552中包括但不限于:任务提取模块61、合并模块62、执行模块63、分析单元621、合并单元622、目标任务生成单元623、执行单元631、发送单元632、接收单元633。
应用程序552中各模块的具体实现参见图7所示实施例中的相应模块,在此不赘述
处理器51,用于获取至少两个MapReduce任务,并合并所述至少两个MapReduce任务得到目标MapReduce任务。
其中,所述至少两个MapReduce任务按照执行先后顺序串行排列,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值。
比如:MapReduce1-MapReduce2-…-MapReduce N为串行的任务,N为大于等于3的整数。MapReduce1任务包括执行Map1任务后输出结果Output1。MapReduce2任务包括执行Map2任务后输出结果Output2,并且需要将Output1作为执行Map2过程的输入参数。…。MapReduce N任务包括执行Map N任务后输出结果Output N,并且需要将Output N-1作为执行Map N过程的输入参数。则处 理器51可以用于将Map1、Map2、…Map N进行合并,并生成一个新的Map任务,称之为目标Map任务,处理器51在执行目标Map任务的后的输出结果即为OutputN。执行目标Map任务并输出了Output N后,再将Output N通过通信接口54发送至用于执行Reduce任务的设备,这样就实现了计算设备50将MapReduce1、MapReduce2、…、MapReduce N进行合并得到目标MapReduce任务,而目标MapReduce任务即为目标Map任务+Reduce任务的组合。
所述处理器51,还用于执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果,并将所述输出结果发送至所述通信接口。
举例来说:
MapReduce1-MapReduce2–MapReduce3–MapReduce4–MapReduce5为用于实现累加计算的串行任务。其中原始数值为10,MapReduce1任务为用于在原始数值上加1的任务,MapReduce1任务的Map1任务用于实现“+1”。MapReduce2任务为用于在原始数值上加2的任务,MapReduce2任务的Map2任务用于实现“+2”。MapReduce3任务为用于在原始数值上加-1的任务,MapReduce3任务的Map3任务用于实现“-1”。MapReduce4任务为用于在原始数值上加0的任务,MapReduce4任务的Map4任务用于实现“+0”。MapReduce5任务为用于在原始数值上加1的任务,MapReduce5任务的Map5任务用于实现“+1”。
若按照现有技术中的方案,则对于MapReduce1-MapReduce2–MapReduce3–MapReduce4–MapReduce5的串行任务的执行步骤如图1b所示,包括:
1、计算设备的处理器执行MapReduce1,读取原始数值得到输入值10,执行Map1任务得到输出结果11,并通过通信接口将输出结果11发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
2、处理器执行MapReduce2,这就需要处理器通过通信接口从分布式系统上 读取S1的输出结果11作为输入值,执行Map2任务得到输出结果13,再通过通信接口将输出结果13发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
3、处理器执行MapReduce3,处理器通过通信接口从分布式系统上读取S2的输出结果13,执行Map3任务得到输出结果12,再通过通信接口将输出结果12发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
4、处理器执行MapReduce4,处理器通过通信接口从分布式系统上读取S3的输出结果12,执行Map4任务得到输出结果12,再通过通信接口将输出结果12发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
5、处理器执行MapReduce5,处理器通过通信接口从分布式系统上读取S4的输出结果12,执行Map5任务得到输出结果13,再通过通信接口将输出结果15发送至用于执行Reduce任务的设备,以便对输出结果11执行Reduce任务。
导致现有技术中计算设备的处理器需要通过通信接口从分布式系统上至少读写4次数据。而在本实施例中,处理器51在确定了需要合并的串行排列的MapReduce任务后,可以将所有的MapReduce任务合并为一个MapReduce任务,比如:合并MapReduce1任务、MapReduce2任务、MapReduce3任务、MapReduce4任务和MapReduce5任务后,得到第一目标MapReduce任务。第一目标MapReduce任务的Map任务为Map M。其中由Map1至5直接在计算设备50的内存中顺序执行“+1+2-1+0+1”,得到Map M任务为“+3”。则处理器51执行第一目标MapReduce任务的输出结果Output M=10+3=13。
或者,处理器51在确定了需要合并的串行排列的MapReduce任务后,也可以将所有的MapReduce任务当中的一部分合并为一个MapReduce任务,比如:合并MapReduce1任务、MapReduce2任务、MapReduce3任务、MapReduce4任务得 到第二目标MapReduce任务,第二目标MapReduce任务的Map任务为Map M’。其中由Map1至4进行直接在计算设备50的内存中顺序执行“+1+2-1+0”,得到Map M任务为“+2”,则第二目标MapReduce任务可以实现为如图1a所示的形式,即实现为第二目标MapReduce-MapReduce5的这两个成串行关系的MapReduce任务。
通信接口54,用于向所述外部存储设备发送所述输出结果。
进一步的,所述处理器51,具体用于从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map任务;并根据所述至少两个MapReduce任务相互之间的信息依赖关系,合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的Map任务的代码的输入值;并利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。
可选的,所述处理器51,具体用于执行所述合并后的Map任务,并将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
在实际应用中,所述处理器51,具体用于获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;并先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。
本发明实施例提供的处理串行任务的计算设备,能够合并多个串行 MapReduce任务,并执行合并得到的MapReduce任务。在合并得到的MapReduce任务中,只需执行一次Reduce任务。因此本发明通过合并执行MapReduce任务减少了执行串行MapReduce任务时所需Reduce任务的次数,因此节省了执行Reduce任务过程中从分布式系统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽,从而减少处理大量数据所需的时间以及网络资源。
在本发明实施例中还提供了一种处理串行任务的数据处理装置60,如图6所示,可以包括:
任务提取模块61,用于获取至少两个MapReduce任务,所述至少两个MapReduce任务按照执行先后顺序串行排列所述至少两个MapReduce任务按照执行先后顺序串行排列;其中,当两个MapReduce任务串行排列时,前一个MapReduce任务被执行后得到的输出值为后一个MapReduce任务的输入值。
合并模块62,用于合并所述至少两个MapReduce任务得到目标MapReduce任务。
执行模块63,用于执行目标MapReduce任务,并得到所述目标MapReduce任务的输出结果。
其中,如图7所示,所述合并模块62可以包括:
分析单元621,用于从所述至少两个MapReduce任务中,提取每一个MapReduce任务对应的Map任务。
合并单元622,用于合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map任务的代码,并得到合并后的Map任务的代码,其中,当所述至少两个MapReduce任务存在信息依赖关系时,所述至少两个MapReduce任务按照执行的先后顺序依次排列,并且前一个MapReduce任务对应的Map任务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的 Map任务的代码的输入值。
目标任务生成单元623,用于利用所述合并后的Map任务的代码,得到所述目标MapReduce任务。
其中,所述合并单元622,具体用于:获取每一个MapReduce任务对应的Map任务的环境准备操作代码、逻辑操作代码和环境清理操作代码;先编译所获取的每一个MapReduce任务对应的Map任务的环境准备操作代码;再编译所获取的每一个MapReduce任务对应的Map任务的逻辑操作代码;之后编译所获取的每一个MapReduce任务对应的Map任务的环境清理操作代码;最后得到所述合并后的Map任务的代码。
可选的,所述执行模块63包括:
执行单元631,用于执行所述合并后的Map任务;
发送单元632,用于将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设备;
接收单元633,用于接收所述用于执行Reduce任务的设备发送的所述输出结果,所述输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。
本发明实施例提供的处理串行任务的数据处理装置,能够合并多个串行MapReduce任务,并执行合并得到的MapReduce任务。在合并得到的MapReduce任务中,只需执行一次Reduce任务。因此本发明通过合并执行MapReduce任务减少了执行串行MapReduce任务时所需Reduce任务的次数,因此节省了执行Reduce任务过程中从分布式系统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽,从而减少处理大量数据所需的时间以及网络资源。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相 似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

一种处理串行任务的数据处理装置及方法.pdf_第1页
第1页 / 共25页
一种处理串行任务的数据处理装置及方法.pdf_第2页
第2页 / 共25页
一种处理串行任务的数据处理装置及方法.pdf_第3页
第3页 / 共25页
点击查看更多>>
资源描述

《一种处理串行任务的数据处理装置及方法.pdf》由会员分享,可在线阅读,更多相关《一种处理串行任务的数据处理装置及方法.pdf(25页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103838626 A (43)申请公布日 2014.06.04 CN 103838626 A (21)申请号 201410069692.5 (22)申请日 2014.02.27 G06F 9/46(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 (72)发明人 刘衍初 刘超 (74)专利代理机构 北京中博世达专利商标代理 有限公司 11274 代理人 申健 (54) 发明名称 一种处理串行任务的数据处理装置及方法 (57) 摘要 本发明实施例公开了一种处理串行任务的 数据处理装置及方法, 能够在数据处理。

2、的过程中 减少从分布式系统中的各个节点设备的磁盘上 读取输出结果的次数, 从而减少处理大量数据所 需的时间以及所占用的网络资源。本发明的方 法包括 : 获取至少两个 MapReduce 任务, 至少两 个 MapReduce 任务按照执行先后顺序串行排列 ; 其中, 当两个 MapReduce 任务串行排列时, 前一 个 MapReduce 任务被执行后得到的输出值为后 一个 MapReduce 任务的输入值 ; 合并至少两个 MapReduce 任务得到目标 MapReduce 任务 ; 执行 目标MapReduce任务, 并得到目标MapReduce任务 的输出结果。 (51)Int.Cl。

3、. 权利要求书 2 页 说明书 15 页 附图 7 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书15页 附图7页 (10)申请公布号 CN 103838626 A CN 103838626 A 1/2 页 2 1. 一种处理串行任务的数据处理装置, 其特征在于, 包括 : 任务提取模块, 用于获取至少两个MapReduce任务, 所述至少两个MapReduce任务按照 执行先后顺序串行排列所述至少两个 MapReduce 任务按照执行先后顺序串行排列 ; 其中, 当两个 MapReduce 任务串行排列时, 前一个 MapReduce 任务被执行后得到。

4、的输出值为后一 个 MapReduce 任务的输入值 ; 合并模块, 用于合并所述至少两个 MapReduce 任务得到目标 MapReduce 任务 ; 执行模块, 用于执行目标 MapReduce 任务, 并得到所述目标 MapReduce 任务的输出结 果。 2. 根据权利要求 1 所述的处理串行任务的数据处理装置, 其特征在于, 所述合并模块 包括 : 分析单元, 用于从所述至少两个MapReduce任务中, 提取每一个MapReduce任务对应的 Map 任务 ; 合并单元, 用于合并所述至少两个MapReduce任务中每一个MapReduce任务对应的Map 任务的代码, 并得到合。

5、并后的 Map 任务的代码, 其中, 当所述至少两个 MapReduce 任务存在 信息依赖关系时, 所述至少两个 MapReduce 任务按照执行的先后顺序依次排列, 并且前一 个 MapReduce 任务对应的 Map 任务的代码的输出值作为与所述前一个 MapReduce 任务相邻 的后一个 MapReduce 任务对应的 Map 任务的代码的输入值 ; 目标任务生成单元, 用于利用所述合并后的 Map 任务的代码, 得到所述目标 MapReduce 任务。 3. 根据权利要求 2 所述的处理串行任务的数据处理装置, 其特征在于, 所述执行模块 包括 : 执行单元, 用于执行所述合并后的。

6、 Map 任务 ; 发送单元, 用于将所述合并后的Map任务的执行结果发送至用于执行Reduce任务的设 备 ; 接收单元, 用于接收所述用于执行 Reduce 任务的设备发送的所述输出结果, 所述输出 结果由所述用于执行 Reduce 任务的设备根据所述合并后的 Map 任务的执行结果得到。 4.根据权利要求2或3所述的处理串行任务的数据处理装置, 其特征在于, 所述合并单 元, 具体用于 : 获取每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码、 逻辑操作代码和环 境清理操作代码 ; 先编译所获取的每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码。

7、 ; 再编译 所获取的每一个 MapReduce 任务对应的 Map 任务的逻辑操作代码 ; 之后编译所获取的每一 个 MapReduce 任务对应的 Map 任务的环境清理操作代码 ; 最后得到所述合并后的 Map 任务 的代码。 5. 一种处理串行任务的数据处理方法, 其特征在于, 包括 : 获取至少两个 MapReduce 任务, 所述至少两个 MapReduce 任务按照执行先后顺序串行 排列 ; 其中, 当两个 MapReduce 任务串行排列时, 前一个 MapReduce 任务被执行后得到的输 出值为后一个 MapReduce 任务的输入值 ; 合并所述至少两个 MapReduc。

8、e 任务得到目标 MapReduce 任务 ; 权 利 要 求 书 CN 103838626 A 2 2/2 页 3 执行目标 MapReduce 任务, 并得到所述目标 MapReduce 任务的输出结果。 6. 根据权利要求 5 所述的处理串行任务的数据处理方法, 其特征在于, 所述合并所述 至少两个 MapReduce 任务得到目标 MapReduce 任务, 具体包括 : 从所述至少两个 MapReduce 任务中, 提取每一个 MapReduce 任务对应的 Map 任务 ; 合并所述至少两个 MapReduce 任务中每一个 MapReduce 任务对应的 Map 任务的代码, 并。

9、得到合并后的 Map 任务的代码, 其中, 当所述至少两个 MapReduce 任务存在信息依赖关 系时, 所述至少两个 MapReduce 任务按照执行的先后顺序依次排列, 并且前一个 MapReduce 任务对应的 Map 任务的代码的输出值作为与所述前一个 MapReduce 任务相邻的后一个 MapReduce 任务对应的 Map 任务的代码的输入值 ; 利用所述合并后的 Map 任务的代码, 得到所述目标 MapReduce 任务。 7. 根据权利要求 6 所述的处理串行任务的数据处理方法, 其特征在于, 所述执行目标 MapReduce 任务, 得到所述目标 MapReduce 任。

10、务的输出结果, 包括 : 执行所述合并后的 Map 任务, 并将所述合并后的 Map 任务的执行结果发送至用于执行 Reduce 任务的设备 ; 接收所述用于执行 Reduce 任务的设备发送的所述输出结果, 所述输出结果由所述用 于执行 Reduce 任务的设备根据所述合并后的 Map 任务的执行结果得到。 8.根据权利要求6或7所述的处理串行任务的数据处理方法, 其特征在于, 所述合并所 述至少两个 MapReduce 任务中每一个 MapReduce 任务对应的 Map 任务的代码, 并得到合并 后的 Map 任务的代码, 具体包括 : 获取每一个 MapReduce 任务对应的 Map。

11、 任务的环境准备操作代码、 逻辑操作代码和环 境清理操作代码 ; 先编译所获取的每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码 ; 再编译 所获取的每一个 MapReduce 任务对应的 Map 任务的逻辑操作代码 ; 之后编译所获取的每一 个 MapReduce 任务对应的 Map 任务的环境清理操作代码 ; 最后得到所述合并后的 Map 任务 的代码。 权 利 要 求 书 CN 103838626 A 3 1/15 页 4 一种处理串行任务的数据处理装置及方法 技术领域 0001 本发明涉及电子信息技术领域, 尤其涉及一种处理串行任务的数据处理装置及方 法。 背景技。

12、术 0002 目前, 由于数据规模越来越大, 为了有效处理大规模数据, 已经发展出了很多适用 于大数据处理的技术。 其中, MapReduce是一种常用的用于处理大规模数据的技术。 在应用 了 MapReduce 的编程模型中, 需要使用 Map(映射) 函数和 Reduce(规约) 函数。其中, map 函数 : 接受一个键值对 (key-value pair) , 产生一组中间键值对, 并将 map 函数产生的中间 键值对里键相同的值传递给一个 reduce 函数。reduce 函数 : 接受一个键, 以及相关的一组 值, 将这组值进行合并产生一组规模更小的值 (通常只有一个或零个值) 。。

13、 0003 在实际应用中, 一个 MapReduce 任务可以由一个基于 Map(映射) 函数的 Map 任务 和一个基于 Reduce(规约) 函数的 Reduce 任务组成, 例如 : 在 HDFS(Hadoop Distributed File System, Hadoop 分布式文件系统) 技术中, 经常需要执行串行的多个 MapReduce 任务, 对于每一个MapReduce任务, 需要先执行Map任务, 并将输出结果存储到分布式系统中的各 个节点设备的磁盘上。之后再通过采用 HTTP 协议从分布式系统中的各个节点设备上远程 拷贝每一个 Map 任务执行完毕后的输出结果, 再对该输。

14、出结果进行执行 Reduce 任务。并重 复这个过程, 直至将所有的 MapReduce 流程依次执行完毕。 0004 由此可见, 执行一个 MapReduce 任务需要从分布式系统的节点设备的磁盘上读取 至少一次输出结果。如果执行多个串行 MapReduce 任务过程中, 就需要占用很多时间和网 络带宽分多次从分布式系统中的各个节点设备的磁盘上读取输出结果, 从而增加处理大量 数据所需的时间以及网络资源。 发明内容 0005 本发明的实施例提供一种处理串行任务的数据处理装置及方法, 能够在数据处理 的过程中减少从分布式系统中的各个节点设备的磁盘上读取输出结果的次数, 从而减少处 理大量数据所。

15、需的时间以及所占用的网络资源。 0006 为达到上述目的, 本发明的实施例采用如下技术方案 : 0007 第一方面, 本发明的实施例提供处理串行任务的数据处理装置, 其特征在于, 包 括 : 0008 任务提取模块, 用于获取至少两个MapReduce任务, 所述至少两个MapReduce任务 按照执行先后顺序串行排列所述至少两个 MapReduce 任务按照执行先后顺序串行排列 ; 其 中, 当两个MapReduce任务串行排列时, 前一个MapReduce任务被执行后得到的输出值为后 一个 MapReduce 任务的输入值 ; 0009 合并模块, 用于合并所述至少两个 MapReduce。

16、 任务得到目标 MapReduce 任务 ; 0010 执行模块, 用于执行目标MapReduce任务, 并得到所述目标MapReduce任务的输出 说 明 书 CN 103838626 A 4 2/15 页 5 结果。 0011 结合第一方面, 在第一方面的第一种可能的实现方式中, 所述合并模块包括 : 0012 分析单元, 用于从所述至少两个MapReduce任务中, 提取每一个MapReduce任务对 应的 Map 任务 ; 0013 合并单元, 用于合并所述至少两个 MapReduce 任务中每一个 MapReduce 任务对应 的 Map 任务的代码, 并得到合并后的 Map 任务的。

17、代码, 其中, 当所述至少两个 MapReduce 任 务存在信息依赖关系时, 所述至少两个 MapReduce 任务按照执行的先后顺序依次排列, 并 且前一个 MapReduce 任务对应的 Map 任务的代码的输出值作为与所述前一个 MapReduce 任 务相邻的后一个 MapReduce 任务对应的 Map 任务的代码的输入值 ; 0014 目标任务生成单元, 用于利用所述合并后的 Map 任务的代码, 得到所述目标 MapReduce 任务。 0015 结合第一方面的第一种可能的实现方式, 在第二种可能的实现方式中, 所述执行 模块包括 : 0016 执行单元, 用于执行所述合并后的。

18、 Map 任务 ; 0017 发送单元, 用于将所述合并后的Map任务的执行结果发送至用于执行Reduce任务 的设备 ; 0018 接收单元, 用于接收所述用于执行 Reduce 任务的设备发送的所述输出结果, 所述 输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的执行结果得到。 0019 结合第一方面的第一或二种可能的实现方式 , 在第三种可能的实现方式中, 所述 合并单元, 具体用于 : 0020 获取每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码、 逻辑操作代码 和环境清理操作代码 ; 0021 先编译所获取的每一个 MapReduce 。

19、任务对应的 Map 任务的环境准备操作代码 ; 再 编译所获取的每一个 MapReduce 任务对应的 Map 任务的逻辑操作代码 ; 之后编译所获取的 每一个 MapReduce 任务对应的 Map 任务的环境清理操作代码 ; 最后得到所述合并后的 Map 任务的代码。 0022 第二方面, 本发明的实施例提供一种处理串行任务的数据处理方法, 其特征在于, 包括 : 0023 获取至少两个 MapReduce 任务, 所述至少两个 MapReduce 任务按照执行先后顺序 串行排列 ; 其中, 当两个 MapReduce 任务串行排列时, 前一个 MapReduce 任务被执行后得到 的输出。

20、值为后一个 MapReduce 任务的输入值 ; 0024 合并所述至少两个 MapReduce 任务得到目标 MapReduce 任务 ; 0025 执行目标 MapReduce 任务, 并得到所述目标 MapReduce 任务的输出结果。 0026 结合第二方面, 在第二方面的第一种可能的实现方式中, 所述合并所述至少两个 MapReduce 任务得到目标 MapReduce 任务, 具体包括 : 0027 从所述至少两个 MapReduce 任务中, 提取每一个 MapReduce 任务对应的 Map 任务 ; 0028 合并所述至少两个 MapReduce 任务中每一个 MapRedu。

21、ce 任务对应的 Map 任务的 代码, 并得到合并后的 Map 任务的代码, 其中, 当所述至少两个 MapReduce 任务存在信息 依赖关系时, 所述至少两个 MapReduce 任务按照执行的先后顺序依次排列, 并且前一个 说 明 书 CN 103838626 A 5 3/15 页 6 MapReduce 任务对应的 Map 任务的代码的输出值作为与所述前一个 MapReduce 任务相邻的 后一个 MapReduce 任务对应的 Map 任务的代码的输入值 ; 0029 利用所述合并后的 Map 任务的代码, 得到所述目标 MapReduce 任务。 0030 结合第二方面的第一种可。

22、能的实现方式, 在第二种可能的实现方式中, 所述执行 目标 MapReduce 任务, 得到所述目标 MapReduce 任务的输出结果, 包括 : 0031 执行所述合并后的 Map 任务, 并将所述合并后的 Map 任务的执行结果发送至用于 执行 Reduce 任务的设备 ; 0032 接收所述用于执行 Reduce 任务的设备发送的所述输出结果, 所述输出结果由所 述用于执行 Reduce 任务的设备根据所述合并后的 Map 任务的执行结果得到。 0033 结合第二方面的第一或二种可能的实现方式 , 在第三种可能的实现方式中, 其特 征在于, 所述合并所述至少两个 MapReduce 任。

23、务中每一个 MapReduce 任务对应的 Map 任务 的代码, 并得到合并后的 Map 任务的代码, 具体包括 : 0034 获取每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码、 逻辑操作代码 和环境清理操作代码 ; 0035 先编译所获取的每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码 ; 再 编译所获取的每一个 MapReduce 任务对应的 Map 任务的逻辑操作代码 ; 之后编译所获取的 每一个 MapReduce 任务对应的 Map 任务的环境清理操作代码 ; 最后得到所述合并后的 Map 任务的代码。 0036 第三方面, 本发明。

24、的实施例提供一种处理串行任务的计算设备, 其特征在于, 所述 计算设备至少包括 : 处理器和通信接口, 所述处理器和通信接口通过所述计算设备的总线 相连接, 所述通信接口用于所述计算设备与外部存储设备进行数据传输 ; 0037 所述处理器, 用于获取至少两个 MapReduce 任务, 并合并所述至少两个 MapReduce 任务得到目标MapReduce任务, 所述至少两个MapReduce任务按照执行先后顺序串行排列 ; 其中, 当两个MapReduce任务串行排列时, 前一个MapReduce任务被执行后得到的输出值为 后一个 MapReduce 任务的输入值 ; 0038 所述处理器,。

25、 还用于执行目标MapReduce任务, 并得到所述目标MapReduce任务的 输出结果, 并将所述输出结果发送至所述通信接口 ; 0039 所述通信接口, 用于向所述外部存储设备发送所述输出结果。 0040 结合第三方面, 在第三方面的第一种可能的实现方式中, 所述处理器, 具体用于从 所述至少两个MapReduce任务中, 提取每一个MapReduce任务对应的Map任务 ; 并根据所述 至少两个 MapReduce 任务相互之间的信息依赖关系, 合并所述至少两个 MapReduce 任务中 每一个 MapReduce 任务对应的 Map 任务的代码, 并得到合并后的 Map 任务的代码。

26、, 其中, 当 所述至少两个 MapReduce 任务存在信息依赖关系时, 所述至少两个 MapReduce 任务按照执 行的先后顺序依次排列, 并且前一个 MapReduce 任务对应的 Map 任务的代码的输出值作为 与所述前一个 MapReduce 任务相邻的后一个 MapReduce 任务对应的 Map 任务的代码的输入 值 ; 并利用所述合并后的 Map 任务的代码, 得到所述目标 MapReduce 任务。 0041 结合第三方面的第一种可能的实现方式, 在第二种可能的实现方式中, 所述处理 器, 具体用于执行所述合并后的Map任务, 并将所述合并后的Map任务的执行结果发送至用 。

27、于执行 Reduce 任务的设备 ; 说 明 书 CN 103838626 A 6 4/15 页 7 0042 接收所述用于执行 Reduce 任务的设备发送的所述输出结果, 所述输出结果由所 述用于执行 Reduce 任务的设备根据所述合并后的 Map 任务的执行结果得到。 0043 结合第三方面的第一或二种可能的实现方式 , 在第三种可能的实现方式中, 所述 处理器, 具体用于获取每一个MapReduce任务对应的Map任务的环境准备操作代码、 逻辑操 作代码和环境清理操作代码 ; 并先编译所获取的每一个 MapReduce 任务对应的 Map 任务的 环境准备操作代码 ; 再编译所获取的。

28、每一个 MapReduce 任务对应的 Map 任务的逻辑操作代 码 ; 之后编译所获取的每一个 MapReduce 任务对应的 Map 任务的环境清理操作代码 ; 最后 得到所述合并后的 Map 任务的代码。 0044 本发明实施例提供的处理串行任务的计算设备、 数据处理装置及方法, 能够合并 多个串行 MapReduce 任务, 并执行合并得到的 MapReduce 任务。在合并得到的 MapReduce 任务中, 只需执行一次 Reduce 任务。因此本发明通过合并执行 MapReduce 任务减少了执行 串行 MapReduce 任务时所需 Reduce 任务的次数, 因此节省了执行 。

29、Reduce 任务过程中从分 布式系统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽, 从而减少 处理大量数据所需的时间以及网络资源。 附图说明 0045 为了更清楚地说明本发明实施例中的技术方案, 下面将对实施例中所需要使用的 附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施例, 对于本领 域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其它的附 图。 0046 图 1 为本发明实施例提供的一种处理串行任务的数据处理方法的流程图 ; 0047 图 1a、 图 1b 为本发明实施例提供的具体实例的逻辑示意图 ; 0048 图 2 。

30、为本发明实施例提供的另一种处理串行任务的数据处理方法的流程图 ; 0049 图 3 为本发明实施例提供的再一种处理串行任务的数据处理方法的流程图 ; 0050 图 4 为本发明实施例提供的一种具体实例的示意图 ; 0051 图 5 为本发明实施例提供的一种处理串行任务的计算设备的结构示意图 ; 0052 图 6 为本发明实施例提供的一种处理串行任务的数据处理装置的结构示意图 ; 0053 图 7 为本发明实施例提供的另一种处理串行任务的数据处理装置的结构示意图。 具体实施方式 0054 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施。

31、例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它 实施例, 都属于本发明保护的范围。 0055 在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的, 而非旨在限制 本发明。在本发明实施例和所附权利要求书中所使用的单数形式的 “一种” 、“所述” 和 “该” 也旨在包括多数形式, 除非上下文清楚地表示其他含义。还应当理解, 本文中使用的术语 “和 / 或” 是指并包含一个或多个相关联的列出项目的任何或所有可能组合。取决于语境, 如在此所使用的词语 “如果” 可以被解释成为 “在时” 或 “当时” 或 “。

32、响应于确定” 说 明 书 CN 103838626 A 7 5/15 页 8 或 “响应于检测” 。类似地, 取决于语境, 短语 “如果确定” 或 “如果检测 ( 陈述的条件或事 件 )” 可以被解释成为 “当确定时” 或 “响应于确定” 或 “当检测 ( 陈述的条件或事件 ) 时” 或 “响应于检测 ( 陈述的条件或事件 )” 。 0056 需要说明的是, 本发明实施例提供的实施例可以由任何一种具有数据处理和传输 功能的计算设备执行。比如 : 服务器、 计算机或终端设备等。具体的, 本实施例的实施过程 可以利用现有的实现 MapReduce 技术的硬件环境, 并可以将经过本实施例的方法处理后。

33、的 数据存储在分布式系统上。 0057 本发明实施例提供一种处理串行任务的数据处理方法, 如图 1 所示, 包括 : 0058 101, 计算设备获取至少两个 MapReduce 任务。 0059 其中, 至少两个MapReduce任务按照执行先后顺序串行排列 ; 当两个MapReduce任 务串行排列时, 前一个 MapReduce 任务被执行后得到的输出值为后一个 MapReduce 任务的 输入值。当计算设备开始运行 M/R(MapReduce 框架) 并开始处理 MapReduce 任务时, 获取 至少两个按照执行先后顺序串行排列 MapReduce 任务, 例如 : 计算设备获取的是。

34、一连串用 于实现计算过程的 MapReduce 任务, 其中前一个 MapReduce 任务的处理结果可以是之后一 个或多个的 MapReduce 任务的输入值。 0060 102, 合并所述至少两个 MapReduce 任务得到目标 MapReduce 任务。 0061 在本实施例中, 合并所述至少两个 MapReduce 任务的过程可以理解为将至少两个 MapReduce 任务各自的 Map 任务进行合并, 例如 : 0062 如 图 1a 所 示, 其 中 “第 一 映 射 任 务”表 示 Map1 任 务,“第 二 映 射 任 务”表 示 Map2 任务,“第五映射任务”表示 Map5。

35、 任务。 “化简任务”表示 Reduce 任务。 MapReduce1-MapReduce2-MapReduce N 为 串 行 的 任 务, N 为 大 于 等 于 3 的 整 数。 MapReduce1 任务包括执行 Map1 任务后输出结果 Output1。MapReduce2 任务包括执行 Map2 任务后输出结果 Output2, 并且需要将 Output1 作为执行 Map2 过程的输入参数。 MapReduce N 任务包括执行 Map N 任务后输出结果 Output N, 并且需要将 Output N-1 作为 执行 Map N 过程的输入参数。则计算设备将 Map1 任务、。

36、 Map2 任务、Map N 任务进行合 并。并生成一个新的 Map 任务, 称之为目标 Map 任务, 执行目标 Map 任务的后的输出结果 即为 Output N。执行目标 Map 任务并输出了 Output N 后, 再将 Output N 发送至用于执行 Reduce 任务的设备, 这样就实现了计算设备将 MapReduce1、 MapReduce2、 MapReduce N 进行合并得到目标 MapReduce 任务, 而目标 MapReduce 任务即为目标 Map 任务 +Reduce 任 务的组合。比如 : 0063 MapReduce1-MapReduce2MapReduce。

37、3MapReduce4MapReduce5 为用于实现累 加计算的串行任务。其中原始数值为 10, MapReduce1 任务为用于在原始数值上加 1 的任 务, MapReduce1 任务的 Map1 任务用于实现 “+1” 。MapReduce2 任务为用于在原始数值上加 2 的任务, MapReduce2 任务的 Map2 任务用于实现 “+2” 。MapReduce3 任务为用于在原始数 值上加 -1 的任务, MapReduce3 任务的 Map3 任务用于实现 “-1” 。MapReduce4 任务为用于 在原始数值上加 0 的任务, MapReduce4 任务的 Map4 任务用。

38、于实现 “+0” 。MapReduce5 任务 为用于在原始数值上加 1 的任务, MapReduce5 任务的 Map5 任务用于实现 “+1” 。 0064 若按照现有技术中的方案, 则对于 MapReduce1-MapReduce2MapReduce3 MapReduce4MapReduce5 的串行任务的执行过程如图 1b 所示, 其中,“任务一”表示 说 明 书 CN 103838626 A 8 6/15 页 9 MapReduce1、“任务二” 表示 MapReduce2、“任务五” 表示 MapReduce5 ;“第一映射任务” 表示 Map1 任务,“第二映射任务” 表示 Ma。

39、p2 任务, ,“第五映射任务” 表示 Map5 任务。 “化 简任务” 表示 Reduce 任务。 0065 现有技术中的执行过程包括 : 0066 执行 MapReduce1, 读取原始数值得到输入值 10, 执行 Map1 任务得到输出结果 11, 并将输出结果 11 发送至用于执行 Reduce 任务的设备, 以便对输出结果 11 执行 Reduce 任 务。 0067 执行 MapReduce2, 从分布式系统上读取 S1 的输出结果 11 作为输入值, 执行 Map2 任务得到输出结果13, 并将输出结果13发送至用于执行Reduce任务的设备, 以便对输出结 果 11 执行 Re。

40、duce 任务。 0068 执行 MapReduce3, 从分布式系统上读取 S2 的输出结果 13, 执行 Map3 任务得到输 出结果 12, 并将输出结果 12 发送至用于执行 Reduce 任务的设备, 以便对输出结果 11 执行 Reduce 任务。 0069 执行 MapReduce4, 从分布式系统上读取 S3 的输出结果 12, 执行 Map4 任务得到输 出结果 12, 并将输出结果 12 发送至用于执行 Reduce 任务的设备, 以便对输出结果 11 执行 Reduce 任务。 0070 执行 MapReduce5, 从分布式系统上读取 S4 的输出结果 12, 执行 M。

41、ap5 任务得到输 出结果 13, 并将输出结果 15 发送至用于执行 Reduce 任务的设备, 以便对输出结果 11 执行 Reduce 任务。 0071 而在本实施例中, 计算设备确定了需要合并的串行排列的 MapReduce 任务后, 可 以将所有的 MapReduce 任务合并为一个 MapReduce 任务, 比如 : 合并 MapReduce1 任务、 MapReduce2 任务、 MapReduce3 任务、 MapReduce4 任务和 MapReduce5 任务后, 得到第一目 标 MapReduce 任务。第一目标 MapReduce 任务的 Map 任务为 Map M。。

42、其中由 Map1 至 5 直 接在计算设备的内存中顺序执行 “+1+2-1+0+1” , 得到 Map M 任务为 “+3” 。则执行第一目标 MapReduce 任务的输出结果 Output M=10+3=13。 0072 或者, 计算设备确定了需要合并的串行排列的 MapReduce 任务后, 也可以将所有 的MapReduce任务当中的一部分合并为一个MapReduce任务, 比如 : 合并MapReduce1任务、 MapReduce2 任务、 MapReduce3 任务、 MapReduce4 任务得到第二目标 MapReduce 任务, 第二 目标 MapReduce 任务的 Ma。

43、p 任务为 Map M 。其中由 Map1 至 4 进行直接在计算设备的内存 中顺序执行 “+1+2-1+0” , 得到 Map M 任务为 “+2” 。 0073 103, 执行目标 MapReduce 任务, 并得到所述目标 MapReduce 任务的输出结果。 0074 本发明实施例提供的处理串行任务的数据处理方法, 能够合并多个串行 MapReduce 任务, 并执行合并得到的 MapReduce 任务。在合并得到的 MapReduce 任务中, 只需执行一次 Reduce 任务。因此本发明通过合并执行 MapReduce 任务减少了执行串行 MapReduce任务时所需Reduce任。

44、务的次数, 因此节省了执行Reduce任务过程中从分布式系 统中的各个节点设备的磁盘上读取输出结果所需占用的时间和网络带宽, 从而减少处理大 量数据所需的时间以及网络资源。 0075 具体的, 本发明实施例可以包括如图 2 所示的方法 : 0076 201, 计算设备获取至少两个 MapReduce 任务。 说 明 书 CN 103838626 A 9 7/15 页 10 0077 其中, 至少两个MapReduce任务按照执行先后顺序串行排列 ; 当两个MapReduce任 务串行排列时, 前一个 MapReduce 任务被执行后得到的输出值为后一个 MapReduce 任务的 输入值。当计。

45、算设备开始运行 M/R (MapReduce 框架) 并开始处理 MapReduce 任务时, 对于待 处理的MapReduce任务, 从中获取至少两个按照执行先后顺序串行排列MapReduce任务, 例 如 : 计算设备获取的是一连串用于实现计算过程的 MapReduce 任务, 其中前一个 MapReduce 任务的处理结果可以是之后一个或多个的 MapReduce 任务的输入值。 0078 202, 从所述至少两个 MapReduce 任务中, 提取每一个 MapReduce 任务对应的 Map 任务。 0079 在本实施例中, 可以在成串行关系的一连串的 MapReduce 任务中, 。

46、选取一部分 MapReduce 任务进行合并, 比如图 4 所示, 其中,“任务一” 表示 MapReduce1 任务、“任务二” 表示 MapReduce2 任务、 、“任务五” 表示 MapReduce5 任务。可以只选取这 5 个 MapReduce 任务中的 3 个 (A 部分) 或是 2 个 (B 部分) 所示的 MapReduce 任务。也可以选取全部 5 个 MapReduce 任务 (C 部分) , 即将所有的 MapReduce 任务都进行合并。 0080 203, 合并所述至少两个 MapReduce 任务中每一个 MapReduce 任务对应的 Map 任务 的代码, 并。

47、得到合并后的 Map 任务的代码。 0081 其中, 当所述至少两个 MapReduce 任务存在信息依赖关系时, 所述至少两个 MapReduce 任务按照执行的先后顺序依次排列, 并且前一个 MapReduce 任务对应的 Map 任 务的代码的输出值作为与所述前一个MapReduce任务相邻的后一个MapReduce任务对应的 Map 任务的代码的输入值。 0082 204, 利用所述合并后的 Map 任务的代码, 得到所述目标 MapReduce 任务。 0083 例如 : 0084 单个 Map 任务的代码信息为 : 0085 说 明 书 CN 103838626 A 10 8/15。

48、 页 11 0086 0087 合并上述代码可以得到合并后的 Map 任务的代码为 : 0088 说 明 书 CN 103838626 A 11 9/15 页 12 0089 0090 计算设备在获取了合并后的 Map 任务的代码信息后, 可以利用合并后的 Map 任务 的代码信息生成一个目标 MapReduce 任务, 在目标 MapReduce 任务中, Map 任务的代码信息 即为合并后的 Map 任务的代码信息。 0091 205, 执行所述合并后的 Map 任务, 并将所述合并后的 Map 任务的执行结果发送至 用于执行 Reduce 任务的设备。 0092 206, 接收所述用于执。

49、行 Reduce 任务的设备发送的所述输出结果。 0093 其中, 输出结果由所述用于执行Reduce任务的设备根据所述合并后的Map任务的 执行结果得到。 0094 在本实施例中, 203 的具体实施方式, 如图 3 所示, 可以实现为 : 0095 301, 获取每一个 MapReduce 任务对应的 Map 任务的环境准备操作代码、 逻辑操作 代码和环境清理操作代码。 0096 例如 : 在上面实施例中所列举的为一个 MapReduce 任务中的 Map 任务的代码信 息, 其中 setup() 为环境准备操作代码。map1() 为逻辑操作代码。cleanup() 为环境清理 说 明 书 CN 103838626 A 12 10/15 页 13 操作代码。 0097 计算设备可以一次执行 302a、 302b、 302c, 从而完成对于每一个。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1