MapReduce作业执行方法、节点设备及存储介质.pdf

上传人:二狗 文档编号:11206798 上传时间:2021-09-12 格式:PDF 页数:26 大小:1.32MB
收藏 版权申诉 举报 下载
MapReduce作业执行方法、节点设备及存储介质.pdf_第1页
第1页 / 共26页
MapReduce作业执行方法、节点设备及存储介质.pdf_第2页
第2页 / 共26页
MapReduce作业执行方法、节点设备及存储介质.pdf_第3页
第3页 / 共26页
文档描述:

《MapReduce作业执行方法、节点设备及存储介质.pdf》由会员分享,可在线阅读,更多相关《MapReduce作业执行方法、节点设备及存储介质.pdf(26页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910075468.X (22)申请日 2019.01.25 (71)申请人 阿里巴巴集团控股有限公司 地址 英属开曼群岛大开曼资本大厦一座四 层847号邮箱 (72)发明人 李瑞盛侯震宇谢德军欧阳哲 (74)专利代理机构 北京太合九思知识产权代理 有限公司 11610 代理人 张爱 (51)Int.Cl. G06F 16/21(2019.01) G06F 16/242(2019.01) G06F 16/2453(2019.01) G06F 16/27(2019.01) (。

2、54)发明名称 MapReduce作业执行方法、 节点设备及存储 介质 (57)摘要 本申请实施例提供一种MapReduce作业执行 方法、 节点设备及存储介质。 在本申请实施例中, 利用Sql语言的语法将用户提交的MapReduce作 业的执行描述信息重新表达为Sql代码片段, 结 合反射调用方法, 可实现在分布式Sql执行框架 中执行MapReduce作业的目的, 借助分布式Sql执 行框架的优势, 可提高MapReduce作业的执行性 能。 权利要求书3页 说明书19页 附图3页 CN 111488326 A 2020.08.04 CN 111488326 A 1.一种映射化简MapRe。

3、duce作业执行方法, 适用于分布式计算系统中的节点设备, 其特 征在于, 所述方法包括: 获取MapReduce作业的执行描述信息, 所述执行描述信息是用户按照MapReduce执行框 架的接口要求使用java语言编写的; 利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片段; 按照分布式Sql执行框架执行所述Sql代码片段, 在所述Sql代码片段的执行过程中反 射调用所述MapReduce作业需要的Map程序和Reduce程序, 以完成所述MapReduce作业。 2.根据权利要求1所述的方法, 其特征在于, 所述执行描述信息包括: 用户为MapReduce 作业配置的Map程序。

4、、 Reduce程序以及Map程序、 Reduce程序的输入输出; 利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片段, 包括: 利用Sql语言中的函数定义类语句, 将所述用户配置的Map程序、 Reduce程序分别映射 到相应的Sql函数; 利用Sql语言中的查询类语句, 将所述用户配置的Map程序、 Reduce程序的输入输出改 写为相应Sql函数的输入输出; 以及 利用Sql语言中的输出类语句, 对用户配置的MapReduce作业的输出进行重新表达。 3.根据权利要求2所述的方法, 其特征在于, 利用Sql语言中的函数定义类语句, 将所述 用户配置的Map程序、 Reduce。

5、程序分别映射到相应的Sql函数, 包括: 利用Sql语言中的创建临时函数create temporary function子句, 为所述用户配置的 Map程序、 Reduce程序分别创建Sql临时函数; Sql临时函数指向相应Map程序或Reduce程序 的jar包的存储路径。 4.根据权利要求3所述的方法, 其特征在于, 利用Sql语言中的查询类语句, 将所述用户 配置的Map程序、 Reduce程序的输入输出改写为相应Sql函数的输入输出, 包括: 若所述用户配置的Map程序、 Reduce程序的输入源是表Table, 则利用Sql语言中的选择 SELECT和来自FROM子句将所述用户配置。

6、的Map程序、 Reduce程序的输入输出定义为相应Sql 临时函数的输入输出; 若所述用户配置的Map程序、 Reduce程序的输入源是结构化文件, 则利用Sql语言中的 Values Table子句将所述用户配置的Map程序、 Reduce程序的输入输出定义为相应Sql临时 函数的输入输出。 5.根据权利要求4所述的方法, 其特征在于, 利用Sql语言中的选择SELECT和来自FROM 子句将所述用户配置的Map程序、 Reduce程序的输入输出定义为相应Sql临时函数的输入输 出, 包括: 若所述用户配置了表Table中可作为输入的字段, 则利用Sql语言中的选择SELECT和来 自FR。

7、OM子句从所述表Table中选择用户配置的字段作为相应Sql临时函数的输入字段, 并将 用户配置的输出字段填充为相应Sql临时函数的输出列表; 若所述用户未配置表Table中可作为输入的字段, 则利用Sql语言中的选择SELECT和来 自FROM子句从表Table中选择全部字段作为相应Sql临时函数的输入字段, 并将用户配置的 输出字段填充为相应Sql临时函数的输出列表。 6.根据权利要求4所述的方法, 其特征在于, 若所述用户配置的Map程序的输入源为多个, 且针对每个输入源的处理程序不一致, 使 权利要求书 1/3 页 2 CN 111488326 A 2 用Sql语言的联合全部UNION。

8、 ALL子句合并多个输入源。 7.根据权利要求4所述的方法, 其特征在于, 还包括: 利用Sql语言中的发布DISTRIBUTE BY功能, 对用户配置的MapReduce作业中的分区排 序SHUFFLE SORT信息进行重新表达; 或者 利用Sql语言中的发布DISTRIBUTE BY功能和排序SORT BY功能, 对用户配置的 MapReduce作业中的分区排序SHUFFLE SORT信息进行重新表达。 8.根据权利要求2所述的方法, 其特征在于, 利用Sql语言中的输出类语句, 对用户配置 的MapReduce作业的输出进行重新表达, 包括: 若用户配置的MapReduce作业的执行结果。

9、为直接输出, 则利用Sql语言中的选择SELECT 子句将执行结果直接输出至屏幕; 若用户配置的MapReduce作业的执行结果为存储至指定表, 则利用Sql语言中的插入 INSERT OVERWRITE/INTO子句或多元插入MULTIINSERT OVERWRITE/INTO子句将执行结果插 入指定表中。 9.根据权利要求2-8任一项所述的方法, 其特征在于, 按照分布式Sql执行框架执行所 述Sql代码片段, 在所述Sql代码片段的执行过程中反射调用所述MapReduce作业需要的Map 程序和Reduce程序, 以完成所述MapReduce作业, 包括: 将所述Sql代码片段送入Sql。

10、解析器, 由Sql解析器对所述Sql代码片段进行解析并将解 析结果输出至Sql优化器; Sql优化器对解析结果进行优化处理得到执行计划并输出至Sql执行器; Sql执行器执行所述执行计划, 并在所述执行计划的执行过程中, 反射调用所述 MapReduce作业需要的Map程序和Reduce程序, 以完成所述MapReduce作业。 10.根据权利要求9所述的方法, 其特征在于, 在所述执行计划的执行过程中, 反射调用 所述MapReduce作业需要的Map程序和Reduce程序, 以完成所述MapReduce作业, 包括: 在所述执行计划的执行过程中, 按照所述Sql代码片段中限定的程序间的先后。

11、顺序, 依 次反射调用所述MapReduce作业需要的Map程序和Reduce程序, 以完成所述MapReduce作业。 11.根据权利要求9所述的方法, 其特征在于, 在所述执行计划的执行过程中, 还包括: 调用与所述MapReduce作业相关的Sql函数的过程; 所述相关的Sql函数的输入和输出是数 据组的对应关系, 所述相关的Sql函数包含将所述Map程序和Reduce程序映射到的Sql函数。 12.一种节点设备, 其特征在于, 包括: 存储器和处理器; 所述存储器, 用于存储计算机程序; 所述处理器, 与所述存储器耦合, 用于执行所述计算机程序, 以用于: 获取MapReduce作业的。

12、执行描述信息, 所述执行描述信息是用户按照MapReduce执行框 架的接口要求使用java语言编写的; 利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片段; 按照分布式Sql执行框架执行所述Sql代码片段, 在所述Sql代码片段的执行过程中反 射调用所述MapReduce作业需要的Map程序和Reduce程序, 以完成所述MapReduce作业。 13.根据权利要求12所述的节点设备, 其特征在于, 所述执行描述信息包括: 用户为 MapReduce作业配置的Map程序、 Reduce程序以及Map程序、 Reduce程序的输入输出; 所述处理器具体用于: 利用Sql语言中的函数。

13、定义类语句, 将所述用户配置的Map程序、 权利要求书 2/3 页 3 CN 111488326 A 3 Reduce程序分别映射到相应的Sql函数; 利用Sql语言中的查询类语句, 将所述用户配置的Map程序、 Reduce程序的输入输出改 写为相应Sql函数的输入输出; 以及 利用Sql语言中的输出类语句, 对用户配置的MapReduce作业的输出进行重新表达。 14.根据权利要求13所述的节点设备, 其特征在于, 所述处理器具体用于: 利用Sql语言 中的创建临时函数create temporary function子句, 将所述用户配置的Map程序、 Reduce 程序分别映射到相应的。

14、Sql临时函数; Sql临时函数指向相应Map程序或Reduce程序的jar包 的存储路径。 15.根据权利要求14所述的节点设备, 其特征在于, 所述处理器具体用于: 若所述用户配置的Map程序、 Reduce程序的输入源是表Table, 则利用Sql语言中的选择 SELECT和来自FROM子句将所述用户配置的Map程序、 Reduce程序的输入输出定义为相应Sql 临时函数的输入输出; 若所述用户配置的Map程序、 Reduce程序的输入源是结构化文件, 则利用Sql语言中的 Values Table子句将所述用户配置的Map程序、 Reduce程序的输入输出定义为相应Sql临时 函数的输。

15、入输出。 16.根据权利要求14所述的节点设备, 其特征在于, 所述处理器具体用于: 利用Sql语言中的发布DISTRIBUTE BY功能, 对用户配置的MapReduce作业中的分区排 序SHUFFLE SORT信息进行重新表达; 或者 利用Sql语言中的发布DISTRIBUTE BY功能和排序SORT BY功能, 对用户配置的 MapReduce作业中的分区排序SHUFFLE SORT信息进行重新表达。 17.根据权利要求13所述的节点设备, 其特征在于, 所述处理器具体用于: 若用户配置的MapReduce作业的执行结果为直接输出, 则利用Sql语言中的选择SELECT 子句将执行结果直。

16、接输出至屏幕; 若用户配置的MapReduce作业的执行结果为存储至指定表, 则利用Sql语言中的插入 INSERT OVERWRITE/INTO子句或多元插入MULTIINSERT OVERWRITE/INTO子句将执行结果插 入指定表中。 18.一种存储有计算机程序的计算机可读存储介质, 其特征在于, 当所述计算机程序被 处理器执行时, 致使所述处理器能够实现权利要求1-11任一项所述方法中的步骤。 权利要求书 3/3 页 4 CN 111488326 A 4 MapReduce作业执行方法、 节点设备及存储介质 技术领域 0001 本申请涉及计算机技术领域, 尤其涉及一种MapReduc。

17、e作业执行方法、 节点设备及 存储介质。 背景技术 0002 MapReduce(映射化简)是一种用于大规模数据并行化运算的编程模型和执行框 架。 MapRedeuce框架允许用户使用函数式编程的思想来表述业务逻辑, 只要实现Map(映 射)、 Reduce(化简)即可提交分布式作业, 而不用关心分布式并行化的细节。 0003 MapReduce编程模型简单、 用户使用java语言实现MapReduce框架提供的接口、 编 写Map和Reduce程序, 就可以把作业提交到分布式计算系统中做分布式大数据计算, 因此在 很多分布式计算系统中得到广泛应用。 但是, MapReduce作业的执行性能相。

18、对较差, 这是业 界迫切需要解决的问题。 发明内容 0004 本申请的多个方面提供一种MapReduce作业执行方法、 节点设备及存储介质, 用以 借助分布式Sql执行框架的优势执行MapReduce作业, 提高MapReduce作业的执行性能。 0005 本申请实施例提供一种MapReduce作业执行方法, 适用于分布式计算系统中的节 点设备, 所述方法包括: 获取MapReduce作业的执行描述信息, 所述执行描述信息是用户按 照MapReduce执行框架的接口要求使用java语言编写的; 利用Sql语言的语法将所述执行描 述信息重新表达为Sql代码片段; 按照分布式Sql执行框架执行所述。

19、Sql代码片段, 在所述 Sql代码片段的执行过程中反射调用所述MapReduce作业需要的Map程序和Reduce程序, 以 完成所述MapReduce作业。 0006 本申请实施例还提供一种节点设备, 包括: 存储器和处理器; 所述存储器, 用于存 储计算机程序; 所述处理器, 与所述存储器耦合, 用于执行所述计算机程序, 以用于: 获取 MapReduce作业的执行描述信息, 所述执行描述信息是用户按照MapReduce执行框架的接口 要求使用java语言编写的; 利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片 段; 按照分布式Sql执行框架执行所述Sql代码片段, 在所述。

20、Sql代码片段的执行过程中反射 调用所述MapReduce作业需要的Map程序和Reduce程序, 以完成所述MapReduce作业。 0007 本申请实施例还提供一种存储有计算机程序的计算机可读存储介质, 当所述计算 机程序被处理器执行时, 致使所述处理器能够实现本申请方法实施例中的步骤。 0008 在本申请实施例中, 利用Sql语言的语法将用户提交的MapReduce作业的执行描述 信息重新表达为Sql代码片段, 结合反射调用方法, 可实现在分布式Sql执行框架中执行 MapReduce作业的目的, 借助分布式Sql执行框架的优势, 可提高MapReduce作业的执行性 能。 说明书 1/。

21、19 页 5 CN 111488326 A 5 附图说明 0009 此处所说明的附图用来提供对本申请的进一步理解, 构成本申请的一部分, 本申 请的示意性实施例及其说明用于解释本申请, 并不构成对本申请的不当限定。 在附图中: 0010 图1为本申请示例性实施例提供的MapReduce执行框架中MapReduce作业的执行过 程的示意图; 0011 图2为本申请示例性实施例提供的由MapReduce作业的执行过程转化为分布式关 系型编程模型的一种简单流程的示意图; 0012 图3a为本申请示例性实施例提供的一种分布式Sql计算系统的硬件架构示意图; 0013 图3b为本申请示例性实施例提供的执。

22、行单元的一种内部结构示意图; 0014 图4为本申请示例性实施例提供的一种节点设备的结构示意图。 具体实施方式 0015 为使本申请的目的、 技术方案和优点更加清楚, 下面将结合本申请具体实施例及 相应的附图对本申请技术方案进行清楚、 完整地描述。 显然, 所描述的实施例仅是本申请一 部分实施例, 而不是全部的实施例。 基于本申请中的实施例, 本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例, 都属于本申请保护的范围。 0016 随着分布式计算系统的发展和分布式Sql(Structured query language, 结构化 查询语言)功能的逐步丰富, 越来越多的分布式。

23、计算系统开始使用分布式Sql执行框架。 分 布式Sql执行框架是一种运行在分布式计算系统中, 支持用户使用Sql语言提交关系型数据 计算作业并可对该关系型数据计算作业进行调度执行的执行框架。 而且, 鉴于Sql程序在维 护性、 表达性等方面的优势, 越来越多的分布式计算系统开始把Sql执行框架作为重心, 在 功能稳定性和性能深层次化等方面不断进行完善和优化, 例如引入基于代价的优化器 (Cost-Based Optimization, CBO)和向量化执行引擎等。 另外, 因为Sql作业规模比较大, 分 布式Sql计算系统提供了更多的运维工具和日志系统, 便于开发和线上作业的分析改进等, 提高。

24、工程效率。 0017 鉴于分布式Sql执行框架的优势, 在本申请实施例中, 考虑将MapReduce作业转换 为Sql执行, 以便借助分布式Sql执行框架的优势, 来提高MapReduce作业的执行性能。 将 MapReduce作业转换为Sql执行, 这不仅是针对分布式Sql执行框架本身的创新, 更是对分布 式编程模型的基础理论的创新。 0018 为了能够将MapReduce作业转换为Sql执行, 本案发明人首先对分布式编程模型的 原理进行了全新的理解, 这种理解与业内传统理解不同, 是对分布式编程模型的一种创新 性理解。 内容如下: 0019 MapReduce执行框架使用的是分治的MapR。

25、educe编程模型。 如图1所示, 是 MapReduce执行框架中MapReduce作业的执行过程。 在图1所示执行过程中, 关键是Map操作 和Reduce操作, 这两个操作调用用户提交的Map程序和Reduce程序即可; 其它操作, 例如输 入数据的分割(split)、 从Map到Reduce的分区、 排序(SHUFFLE SORT)、 执行结果的输出等都 由MapReduce执行框架完成。 0020 相对而言, 分布式Sql执行框架对应的是分布式关系型编程模型。 本案发明人将 MapReduce编程模型看作是分布式关系型编程模型的一种特殊情况, 具体是将MapReduce编 说明书 2。

26、/19 页 6 CN 111488326 A 6 程模型看作是一种简化的分布式关系型编程模型。 例如, MapReduce编程模型的接口可以看 作是一种简化的分布式关系型编程模型的接口, 对外只暴露了Map和Reduce两种操作的接 口; 相对而言, 分布式关系型编程模型则可以对外提供更多操作的接口, 例如可以对外提供 关联(Join)、 过滤(Filter)等操作的接口。 0021 基于上述分析, 在本申请实施例中, 可以将图1所示MapReduce作业的执行过程转 化为分布式关系型编程模型的一种简单流程, 如图2所示。 在图2中, 采用一个ForEach算子 处理用户自定义的Map程序, 。

27、从而实现图1中的Map操作; 采用分布式Sql中的发布功能 (DISTRIBUTE BY)和排序(SORT BY)功能, 实现MapReduce执行框架中从Map操作到Reduce操 作的SHUFFLE SORT功能; 之后针对归并(merge)形成的数据组合采用ForEach算子调用用户 自定义的Reduce程序, 实现图1中的Reduce操作; 最后把执行结果输出或存储到指定位置, 例如分布式文件系统(Distributed File System, DFS)。 0022 基于上述分析可知, 将MapReduce作业转换为Sql执行具备了理论基础。 接下来, 需 要一种能够将MapRedu。

28、ce作业转换为Sql执行的落地方案。 在本申请一些实施例中, 利用Sql 语言的语法将用户提交的MapReduce作业的执行描述信息重新表达为Sql代码片段, 结合反 射调用方法, 可在分布式Sql执行框架中执行MapReduce作业, 达到将MapReduce作业转换为 Sql执行的目的, 借助分布式Sql执行框架的优势, 可提高MapReduce作业的执行性能。 0023 本实施例提供的MapReduce作业执行方法可应用于分布式Sql计算系统, 可由分布 式Sql计算系统中的节点设备实施。 该节点设备可以是分布式Sql计算系统中的任意节点设 备, 例如可以是分布式Sql计算系统中负责作业。

29、调度的节点设备。 本申请实施例并不限定分 布式Sql计算系统的物理架构, 也不对分布式Sql计算系统中的节点设备的实现形态进行限 定。 0024 如图3a所示, 是本申请实施例提供的一种分布式Sql计算系统的架构。 在图3a所示 系统架构中, 包括分布在不同地方的多台计算机、 服务器、 存储设备等节点设备, 这些节点 设备通过互联网连接在一起; 在这些节点设备之上运行有分布式软件系统(Distributed Software Systems), 在该分布式软件系统的调度与控制下完成各种分布式任务。 图3a所示 系统既支持用户提交Sql作业, 也支持用户提交MapReduce作业。 其中, 用户。

30、可以向图3a所示 系统中的节点设备, 例如图3a中负责作业调度的服务器, 提交Sql作业或MapReduce作业。 0025 在本实施例中, 无论分布式Sql计算系统的物理架构如何, 其中的节点设备支持用 户提交Sql作业并可对用户提交的Sql作业进行调度执行, 除此之外, 还支持用户提交 MapReduce作业并可按照分布式Sql执行框架对MapReduce作业进行调度执行。 0026 为了让分布式Sql计算系统中的节点设备能够调度并执行MapReduce作业, 在本申 请实施例中, 借鉴Sql语言的用户定义表函数(UDTF)的概念和临时函数的语法等为节点设 备设计了新的执行单元, 称之为S。

31、tandaloneUDTF。 该执行单元可以反射调用用户编写的Map 程序和Reduce程序, 并且可以针对数据组而非针对单条数据进行处理。 除此之外, 本申请实 施例还基于UDTF定义了一种Sql函数, 从产出特征来看, 这种Sql函数的输入和输出关系是 数据组的对应关系, 即多对多的对应关系, 而不一对一、 一对多或多对一的对应关系。 简单 来说, 本实施例提供的Sql函数支持多个输入, 也支持多个输出。 这样可以更好地满足 MapReduce作业中Reduce程序需要对数据组进行处理的要求, 从而覆盖尽可能多的 MapReduce作业场景。 现有Sql函数按产出特征可划分为: 标量值(S。

32、calar)函数、 聚合 说明书 3/19 页 7 CN 111488326 A 7 (Aggregate)函数、 表(Table)函数。 而本申请实施例提供的Sql函数并不同于前述三种Sql 函数, 是一种产出特征为多对多的Sql函数。 0027 值得说明的是, 本实施例提供的MapReduce作业执行方法对用户来说是透明的, 用 户可以依旧按照MapReduce执行框架的要求向节点设备(具体是指节点设备中的执行单元) 提交MapReduce作业, 可继续发挥MapReduce编程模型简单等优势, 保证用户体验。 其中, 用 户向节点设备提交MapReduce作业的过程如下: 0028 结合。

33、图3a所示, 用户在客户端启动一个MapReduce作业, 客户端向节点设备(例如 图3a中负责作业调度的服务器)请求作业ID和资源文件存储路径。 用户编写Map程序和 Reduce程序, 将Map程序和Reduce程序的jar包、 配置文件等存储到分布式存储系统中相应 存储路径下。 之后, 客户端向节点设备提交MapReduce作业的执行描述信息, 该执行描述信 息是用户按照MapReduce执行框架的接口要求使用java语言编写的。 至此, 用户成功地将 MapReduce作业提交给了节点设备。 0029 在节点设备中, 执行单元获取MapReduce作业的执行描述信息; 利用Sql语言的。

34、语 法将执行描述信息重新表达为Sql代码片段; 按照分布式Sql执行框架执行Sql代码片段, 在 Sql代码片段的执行过程中反射调用MapReduce作业需要的Map程序和Reduce程序, 以完成 MapReduce作业。 0030 值得说明的是, Sql代码片段包括一条或多条Sql语句, 这些Sql语句保留了 MapReduce作业的执行描述信息中的所有信息。 MapReduce作业的执行描述信息实际上是一 段java程序, 主要包括一些与MapReduce作业的执行相关的配置信息。 一般来说, MapReduce 作业的执行描述信息主要包括: 用户为MapReduce作业配置的Map程序。

35、、 Reduce程序以及Map 程序、 Reduce程序的输入输出。 除此之外, MapReduce作业的执行描述信息还可以包括Map程 序、 Reduce程序的运行逻辑, 这些程序运行时的一些特殊需求包括运行时申请内存大小、 分 布式并发数量等, 以及用户配置的中间传输数据的字段名称和类型。 进一步, 根据Map程序、 Reduce程序的输入输出类型的不同, 还可以这些输入输出参数的格式解析方式或者分割符 号等。 0031 可选地, 以执行描述信息中用户为MapReduce作业配置的Map程序、 Reduce程序以 及Map程序、 Reduce程序的输入输出为例, 则执行单元在利用Sql语言。

36、的语法将执行描述信 息重新表达为Sql代码片段时, 需主要完成但不限于以下操作: 0032 一方面, 可利用Sql语言中的函数定义类语句, 将用户配置的Map程序、 Reduce程序 分别映射到相应的Sql函数; 另一方面, 可利用Sql语言中的查询类语句, 将用户配置的Map 程序、 Reduce程序的输入输出改写为相应Sql函数的输入输出; 再者, 可利用Sql语言中的输 出类语句, 对用户配置的MapReduce作业的输出进行重新表达。 0033 在本实施例中, 将Sql语言中具有函数定义功能的语句称为函数定义类语句, 这类 语句可能有多种, 例如function、 temporary 。

37、function等都具有函数定义功能。 可选地, 本 实施例可利用Sql语言中的创建临时函数create temporary function子句, 为用户配置的 Map程序、 Reduce程序分别创建相应的Sql临时函数; 每个Sql临时函数指向相应Map程序或 Reduce程序的jar包的存储路径。 值得说明的是, 这里的Sql临时函数的输入和输出是数据 组的对应关系, 即支持多个输入和多个输出。 0034 值得说明的是, MapReduce作业可能需要多级Reduce程序, 则不同的Reduce程序可 说明书 4/19 页 8 CN 111488326 A 8 被映射到不同的Sql临时函。

38、数, 且在Sql代码片段中, 这些Sql临时函数之间的先后顺序与执 行描述信息中定义的Reduce程序之间的先后顺序相同。 基于此, 执行单元在执行Sql代码片 段时, 可通过Sql临时函数实现对相应Map程序或Reduce程序的反射调用, 并且在Reduce程 序为多级时, 还可以按照相应Sql临时函数之间的先后顺序反射调用Reduce程序。 0035 在本实施例中, 将Sql语言中具有查询功能的语句称为查询类语句, 这类语句可能 有多种, 例如选择(SELECT)、 来自(FROM)、 SELECT和FROM的组合, 以及值表(Values Table) 等语句都具有一定查询功能。 可选地。

39、, 本实施例可以结合用户配置的输入输出的类型, 从 Sql语言的查询类语句中选择适合的语句对执行描述信息中的输入输出参数进行重新表 达。 0036 可选地, 若用户配置的Map程序、 Reduce程序的输入源是表(Table), 则可以利用 Sql语言中的SELECT和FROM子句将用户配置的Map程序、 Reduce程序的输入输出定义为相应 Sql临时函数的输入输出。 0037 进一步, 表中一般包含多个字段。 若用户配置了表中可作为输入的字段, 则可利用 Sql语言中的SELECT和FROM子句从表中选择用户配置的字段作为相应Sql临时函数的输入 字段; 相应地, 将用户配置的输出字段填充。

40、为相应Sql临时函数的输出列表。 当然, 若用户未 配置表中可作为输入的字段, 则可利用Sql语言中的SELECT和FROM子句从表中选择全部字 段作为相应Sql临时函数的输入字段; 相应地, 将用户配置的输出字段填充为相应Sql临时 函数的输出列表。 0038 其中, Map程序、 Reduce程序的输出可分关键字(Key)列和赋值(Value)列, 且 Reduce程序的输入一般是Map程序的输出, 为了进行区分, 在中间过程传输时可为Key列和 Value列添加前缀, 例如k和v, 但不限于此。 0039 由上述可知, 若用户配置的Map程序、 Reduce程序的输入源是表, 与常用的S。

41、ql语句 类似, 可以用类似FROM TABLE的Sql子句表达; 具体用到了表中的哪些字段可以用SELECT子 句表达。 当使用的输入字段不是表中全部字段时, Sql语句执行时会自动做列裁剪来提高性 能。 0040 可选地, 若用户配置的Map程序、 Reduce程序的输入源是结构化文件, 则可利用Sql 语言中的Values Table子句将用户配置的Map程序、 Reduce程序的输入输出定义为相应Sql 临时函数的输入输出。 其中, Values Table是指在Sql中自定义表名和列名的临时表, 该临 时表在当前Sql执行生命周期内有效, 其中的类型从Values列表中自动推导。 V。

42、alues Table 在不准备任何物理表的时候, 可以模拟一个有任意数据的多行的表, 并可进行任意运算; 结 构化文件的内容、 描述及各种信息会通过参数的方式传递给Values Table语句, 在执行时 会通过Values Table描述和配置信息保证正确读取结构化文件并做处理输出。 0041 进一步, 若用户配置的Map程序的输入源为多个, 且针对每个输入源的处理程序不 一致, 则可以使用Sql语言的联合全部(UNION ALL)子句合并多个输入源。 多个输入源合并 后的输出结果作为Reduce程序的输入。 0042 值得说明的是, Map程序的输入就是MapReduce作业的输入, 而。

43、Map程序的输出一般 是Reduce程序的输入。 进一步, 若Reduce程序存在多级, 则上一级Reduce程序的输出一般是 下一级Reduce程序的输入。 关于这种输入输出之间的关系, 用户也会配置在其所提交的 MapReduce作业的执行描述信息中。 经过上述可以将用户采用java语言编写的执行描述信 说明书 5/19 页 9 CN 111488326 A 9 息中的输入输出信息(这里的输入输出信息既包括输入输出是谁也包括输入输出之间的关 系)重新表达为Sql语句。 0043 下面以用户提交的统计字符数量的MapReduce作业场景为例, 对本实施例将 MapReduce作业的执行描述信。

44、息转化为Sql代码片段进行示例性说明。 用户用java语言编写 Map程序和Reduce程序, 并分别在相应程序中对数据进行标记传输和对分组后的数据在组 内进行关联、 合并与输出。 用户按照MapReduce执行框架提供的API接口配置MapReduce作业 的执行描述信息并提交至节点设备的执行单元。 执行单元将该执行描述信息转化为如下 Sql代码片段。 0044 0045 0046 在上述Sql代码片段中, mapper1是执行单元利用create temporary function语 句创建的临时函数的函数名, mapper1指向mapred-cor.jar、 mapred-exampl。

45、e.jar; mapred- cor.jar、 mapred-example.jar代表MapReduce作业中的jar包文件, com.mapred.Mapper表 示MapReduce作业中定义的Map程序的java类路径。 同理, reducer2、 、 reducer8是执行单 元利用create temporary function语句创建的其它临时函数的函数名, reducer2、 、 说明书 6/19 页 10 CN 111488326 A 10 reducer8也指向mapred-cor.jar、 mapred-example.jar, com.mapred.Reducer表示。

46、 MapReduce作业中定义的Reduce程序的java类路径。 0047 进一步, 在上述Sql代码片段中, sub_query_mapper定义了一个表变量(table variable), 命名为sub_query_mapper, 指代后面的Sql子句; 该Sql子句完成从调用用户的 Map程序执行并输出; 其中, src表示输入源, key、 value是执行单元利用SELECT与FROM子句 从输入源src中选择出的输入字段, 这些输入字段是Map程序的输入字段, 被执行单元改写 成了与Map程序对应的Sql临时函数mapper1的输入字段, mapper1的输出结果包括k_wor。

47、d字 段和v_count字段。 其中, k_word、 v_count字段中增加了前缀, 表示是中间输出。 0048 进一步, 执行单元利用发布子句DISTRIBUTE BY和排序子句SORT BY, 按照k_word 字段进行分区和排序以形成数据组, 将数据组分配到不同的Reduce程序, 由这些Reduce程 序进行并行处理。 如上述Sql代码片段, sub_query_reducer定义了另一个表变量(table variable), 命名为sub_query_reducer, 指代后面的Sql子句; 该Sql子句完成从调用用户 的Reduce程序执行并输出; 其中, 执行单元利用SEL。

48、ECT与FROM子句从mapper1的输出结果中 选择k-word字段相同的输出结果作为Reduce程序的输入字段, 这里被执行单元改写成了与 Reduce程序对应的临时函数reducer2的输入字段, 临时函数reducer2的输出字段是用户配 置的输出字段key和cnt。 0049 最后, 针对MapReduce作业的执行描述信息中用于描述MapReduce作业的执行结果 输出方式的语句, 执行单元利用Sql语言中的INSERT OVERWRITE TABLE子句进行重新表达, 将reducer2的输出字段作为整个MapReduce作业的执行结果插入指定表openmr_lot_ gcc49。

49、2.mr_wordcount_out中, 该指定表是用户配置的。 0050 接下来, 继续以用户提交的将普通的两表关联的场景为例, 对本实施例将 MapReduce作业的执行描述信息转化为Sql代码片段进行示例性说明。 用户用java语言编写 Map程序和Reduce程序, 并分别在相应程序中对数据进行标记传输和对分组后的数据在组 内进行关联、 合并与输出。 用户按照MapReduce执行框架提供的Api接口配置MapReduce作业 的执行描述信息并提交至节点设备中的执行单元。 执行单元将该执行描述信息转化为如下 Sql代码片段。 在该场景实施例中, MapReduce作业的输入源为两个, 。

50、下面代码片段重点描述 对两个输入源进行合并的片段, 其余代码片段可参照上述示例实现。 说明书 7/19 页 11 CN 111488326 A 11 0051 0052 0053 在上述Sql代码片段中, sub_query_mapper定义了一个表变量(table variable), 命名为sub_query_mapper, 指代后面的Sql子句; 该Sql子句完成从调用用户的 Map程序执行并输出。 其中, mr_join_src1和mr_join_src2是需要联合的两张表, 这两张表 也是Map程序的输入源; mr2sql_mapper_153717093是执行单元利用create 。

展开阅读全文
内容关键字: MapReduce 作业 执行 方法 节点 设备 存储 介质
关于本文
本文标题:MapReduce作业执行方法、节点设备及存储介质.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/11206798.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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