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

技术编号:25123140 阅读:18 留言:0更新日期:2020-08-05 02:52
本申请实施例提供一种MapReduce作业执行方法、节点设备及存储介质。在本申请实施例中,利用Sql语言的语法将用户提交的MapReduce作业的执行描述信息重新表达为Sql代码片段,结合反射调用方法,可实现在分布式Sql执行框架中执行MapReduce作业的目的,借助分布式Sql执行框架的优势,可提高MapReduce作业的执行性能。

【技术实现步骤摘要】
MapReduce作业执行方法、节点设备及存储介质
本申请涉及计算机
,尤其涉及一种MapReduce作业执行方法、节点设备及存储介质。
技术介绍
MapReduce(映射化简)是一种用于大规模数据并行化运算的编程模型和执行框架。MapRedeuce框架允许用户使用函数式编程的思想来表述业务逻辑,只要实现Map(映射)、Reduce(化简)即可提交分布式作业,而不用关心分布式并行化的细节。MapReduce编程模型简单、用户使用java语言实现MapReduce框架提供的接口、编写Map和Reduce程序,就可以把作业提交到分布式计算系统中做分布式大数据计算,因此在很多分布式计算系统中得到广泛应用。但是,MapReduce作业的执行性能相对较差,这是业界迫切需要解决的问题。
技术实现思路
本申请的多个方面提供一种MapReduce作业执行方法、节点设备及存储介质,用以借助分布式Sql执行框架的优势执行MapReduce作业,提高MapReduce作业的执行性能。本申请实施例提供一种MapReduce作业执行方法,适用于分布式计算系统中的节点设备,所述方法包括:获取MapReduce作业的执行描述信息,所述执行描述信息是用户按照MapReduce执行框架的接口要求使用java语言编写的;利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片段;按照分布式Sql执行框架执行所述Sql代码片段,在所述Sql代码片段的执行过程中反射调用所述MapReduce作业需要的Map程序和Reduce程序,以完成所述MapReduce作业。本申请实施例还提供一种节点设备,包括:存储器和处理器;所述存储器,用于存储计算机程序;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:获取MapReduce作业的执行描述信息,所述执行描述信息是用户按照MapReduce执行框架的接口要求使用java语言编写的;利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片段;按照分布式Sql执行框架执行所述Sql代码片段,在所述Sql代码片段的执行过程中反射调用所述MapReduce作业需要的Map程序和Reduce程序,以完成所述MapReduce作业。本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器能够实现本申请方法实施例中的步骤。在本申请实施例中,利用Sql语言的语法将用户提交的MapReduce作业的执行描述信息重新表达为Sql代码片段,结合反射调用方法,可实现在分布式Sql执行框架中执行MapReduce作业的目的,借助分布式Sql执行框架的优势,可提高MapReduce作业的执行性能。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请示例性实施例提供的MapReduce执行框架中MapReduce作业的执行过程的示意图;图2为本申请示例性实施例提供的由MapReduce作业的执行过程转化为分布式关系型编程模型的一种简单流程的示意图;图3a为本申请示例性实施例提供的一种分布式Sql计算系统的硬件架构示意图;图3b为本申请示例性实施例提供的执行单元的一种内部结构示意图;图4为本申请示例性实施例提供的一种节点设备的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。随着分布式计算系统的发展和分布式Sql(Structuredquerylanguage,结构化查询语言)功能的逐步丰富,越来越多的分布式计算系统开始使用分布式Sql执行框架。分布式Sql执行框架是一种运行在分布式计算系统中,支持用户使用Sql语言提交关系型数据计算作业并可对该关系型数据计算作业进行调度执行的执行框架。而且,鉴于Sql程序在维护性、表达性等方面的优势,越来越多的分布式计算系统开始把Sql执行框架作为重心,在功能稳定性和性能深层次化等方面不断进行完善和优化,例如引入基于代价的优化器(Cost-BasedOptimization,CBO)和向量化执行引擎等。另外,因为Sql作业规模比较大,分布式Sql计算系统提供了更多的运维工具和日志系统,便于开发和线上作业的分析改进等,提高工程效率。鉴于分布式Sql执行框架的优势,在本申请实施例中,考虑将MapReduce作业转换为Sql执行,以便借助分布式Sql执行框架的优势,来提高MapReduce作业的执行性能。将MapReduce作业转换为Sql执行,这不仅是针对分布式Sql执行框架本身的创新,更是对分布式编程模型的基础理论的创新。为了能够将MapReduce作业转换为Sql执行,本案专利技术人首先对分布式编程模型的原理进行了全新的理解,这种理解与业内传统理解不同,是对分布式编程模型的一种创新性理解。内容如下:MapReduce执行框架使用的是分治的MapReduce编程模型。如图1所示,是MapReduce执行框架中MapReduce作业的执行过程。在图1所示执行过程中,关键是Map操作和Reduce操作,这两个操作调用用户提交的Map程序和Reduce程序即可;其它操作,例如输入数据的分割(split)、从Map到Reduce的分区、排序(SHUFFLESORT)、执行结果的输出等都由MapReduce执行框架完成。相对而言,分布式Sql执行框架对应的是分布式关系型编程模型。本案专利技术人将MapReduce编程模型看作是分布式关系型编程模型的一种特殊情况,具体是将MapReduce编程模型看作是一种简化的分布式关系型编程模型。例如,MapReduce编程模型的接口可以看作是一种简化的分布式关系型编程模型的接口,对外只暴露了Map和Reduce两种操作的接口;相对而言,分布式关系型编程模型则可以对外提供更多操作的接口,例如可以对外提供关联(Join)、过滤(Filter)等操作的接口。基于上述分析,在本申请实施例中,可以将图1所示MapReduce作业的执行过程转化为分布式关系型编程模型的一种简单流程,如图2所示。在图2中,采用一个ForEach算子处理用户自定义的Map程序,从而实现图1中的Map操作;采用分布式Sql中的发布功能(DISTRIBUTEBY)和排序(SORTBY)功能,实现MapReduce执行框架中从Map操作到Reduce操作的SHUFFLESORT功能;之后针对归并(merge)形成的数据组合采用ForEach算子调用用户自定义的Reduce程序,实现图1中的Reduce操作;最后把执行结本文档来自技高网...

【技术保护点】
1.一种映射化简MapReduce作业执行方法,适用于分布式计算系统中的节点设备,其特征在于,所述方法包括:/n获取MapReduce作业的执行描述信息,所述执行描述信息是用户按照MapReduce执行框架的接口要求使用java语言编写的;/n利用Sql语言的语法将所述执行描述信息重新表达为Sql代码片段;/n按照分布式Sql执行框架执行所述Sql代码片段,在所述Sql代码片段的执行过程中反射调用所述MapReduce作业需要的Map程序和Reduce程序,以完成所述MapReduce作业。/n

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


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


3.根据权利要求2所述的方法,其特征在于,利用Sql语言中的函数定义类语句,将所述用户配置的Map程序、Reduce程序分别映射到相应的Sql函数,包括:
利用Sql语言中的创建临时函数createtemporaryfunction子句,为所述用户配置的Map程序、Reduce程序分别创建Sql临时函数;Sql临时函数指向相应Map程序或Reduce程序的jar包的存储路径。


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


5.根据权利要求4所述的方法,其特征在于,利用Sql语言中的选择SELECT和来自FROM子句将所述用户配置的Map程序、Reduce程序的输入输出定义为相应Sql临时函数的输入输出,包括:
若所述用户配置了表Table中可作为输入的字段,则利用Sql语言中的选择SELECT和来自FROM子句从所述表Table中选择用户配置的字段作为相应Sql临时函数的输入字段,并将用户配置的输出字段填充为相应Sql临时函数的输出列表;
若所述用户未配置表Table中可作为输入的字段,则利用Sql语言中的选择SELECT和来自FROM子句从表Table中选择全部字段作为相应Sql临时函数的输入字段,并将用户配置的输出字段填充为相应Sql临时函数的输出列表。


6.根据权利要求4所述的方法,其特征在于,
若所述用户配置的Map程序的输入源为多个,且针对每个输入源的处理程序不一致,使用Sql语言的联合全部UNIONALL子句合并多个输入源。


7.根据权利要求4所述的方法,其特征在于,还包括:
利用Sql语言中的发布DISTRIBUTEBY功能,对用户配置的MapReduce作业中的分区排序SHUFFLESORT信息进行重新表达;或者
利用Sql语言中的发布DISTRIBUTEBY功能和排序SORTBY功能,对用户配置的MapReduce作业中的分区排序SHUFFLESORT信息进行重新表达。


8.根据权利要求2所述的方法,其特征在于,利用Sql语言中的输出类语句,对用户配置的MapReduce作业的输出进行重新表达,包括:
若用户配置的MapReduce作业的执行结果为直接输出,则利用Sql语言中的选择SELECT子句将执行结果直接输出至屏幕;
若用户配置的MapReduce作业的执行结果为存储至指定表,则利用Sql语言中的插入INSERTOVERWRITE/INTO子句或多元插入MULTIINSERTOVERWRITE/INTO子句将执行结果插入指定表中。


9.根据权利要求2-8任一项所述的方法,其特征在于,按照分布式Sql执行框架执行所述Sql代码片段,在所述Sql代码片段的执行过程中反射调用所述MapReduce作业需要的Map程序和...

【专利技术属性】
技术研发人员:李瑞盛侯震宇谢德军欧阳哲
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1