《一种处理串行任务的数据处理装置及方法.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, 从而完成对于每一个。