分布式计算方法、装置及系统制造方法及图纸

技术编号:32345668 阅读:13 留言:0更新日期:2022-02-20 02:00
公开了一种分布式计算方法、装置及系统。获取计算作业;将计算作业针对的待处理的数据切分为多个数据块;将计算作业划分为多个映射任务和一个或多个化简任务,并将映射任务和化简任务分配给多个工作节点,其中,每个映射任务对应一个数据块,分配了映射任务的第一工作节点用于对数据块进行处理,以得到中间处理结果,分配了化简任务的第二工作节点的输入来源于第一工作节点的输出;确定与计算作业相适配的分区方式,分区方式用于对多个映射任务产生的中间处理结果进行分区;基于确定的分区方式对第一工作节点的输出进行分区;将同一分区的中间处理结果分配给同一第二工作节点。由此,可以满足用户的个性化分区需求。可以满足用户的个性化分区需求。可以满足用户的个性化分区需求。

【技术实现步骤摘要】
分布式计算方法、装置及系统


[0001]本公开涉及计算领域,特别是涉及一种分布式计算方法、装置及系统。

技术介绍

[0002]MapReduce是指用于大规模数据并行化运算的编程模型和执行框架,MapReduce框架允许用户可以使用函数式编程的思想来表述作业处理逻辑,只要实现Map(映射)、Reduce(化简)即可提交实现分布式作业,而不用关心分布式并行化的细节。很多分布式平台都提供了MapReduce的编程接口,用户按照接口提供Map、Reduce程序的实现,执行框架会自动调用相关程序在分布式平台上并行执行,做大规模分布式运算。
[0003]Shuffle机制是MapReduce框架的核心部分,包含数据分区、排序、缓存多个关键过程,包含数据从Map阶段输出传递给Reduce阶段输入的整个过程。
[0004]Shuffle是连接Map和Reduce之间的桥梁。Map的输出要传递到Reduce中必须经过Shuffle这个环节,Shuffle的性能高低直接影响了整个程序的性能和吞吐量。因为在分布式情况下,ReduceTask(Reduce任务)需要跨节点去拉取其它节点上的MapTask(Map任务)结果。而这其中Partitioner(分区器)是Shuffle机制的核心,用于在Shuffle阶段对MapTask产生的中间结果进行分片,以便将同一分组的数据交给同一个ReduceTask处理。Partitioner对分布式计算的性能和数据倾斜、负载均衡等影响至关重要。
[0005]现有技术中Partitioner的分区算法都是由平台内置的,不能满足上层用户作业的个性化分区需求。

技术实现思路

[0006]本公开要解决的一个技术问题是提供一种能够满足上层用户作业的个性化分区需求的方案。
[0007]根据本公开的第一个方面,提供了一种计算方法,包括:获取计算作业;将计算作业针对的待处理的数据切分为多个数据块;将计算作业划分为多个映射任务和一个或多个化简任务,并将映射任务和化简任务分配给多个工作节点,其中,每个映射任务对应一个数据块,分配了映射任务的第一工作节点用于对数据块进行处理,以得到中间处理结果,分配了化简任务的第二工作节点的输入来源于第一工作节点的输出;确定与计算作业相适配的分区方式,分区方式用于对多个映射任务产生的中间处理结果进行分区;基于确定的分区方式对第一工作节点的输出进行分区;将同一分区的中间处理结果分配给同一第二工作节点。
[0008]根据本公开的第二个方面,还提供了一种计算装置,包括:获取模块,用于获取计算作业;切分模块,用于将计算作业针对的待处理的数据切分为多个数据块;划分模块,用于将计算作业划分为多个映射任务和一个或多个化简任务,并将映射任务和化简任务分配给多个工作节点,其中,每个映射任务对应一个数据块,分配了映射任务的第一工作节点用于对数据块进行处理,以得到中间处理结果,分配了化简任务的第二工作节点的输入来源
于第一工作节点的输出;确定模块,用于确定与计算作业相适配的分区方式,分区方式用于对多个映射任务产生的中间处理结果进行分区;分区模块,用于基于确定的分区方式对第一工作节点的输出进行分区;分配模块,用于将同一分区的中间处理结果分配给同一第二工作节点。
[0009]根据本公开的第三个方面,还提供了一种计算系统,包括:客户端和服务端,客户端用于向服务端发送计算作业;服务端用于:获取计算作业;将计算作业针对的待处理的数据切分为多个数据块;将计算作业划分为多个映射任务和一个或多个化简任务,并将映射任务和化简任务分配给多个工作节点,其中,每个映射任务对应一个数据块,分配了映射任务的第一工作节点用于对数据块进行处理,以得到中间处理结果,分配了化简任务的第二工作节点的输入来源于第一工作节点的输出;确定与计算作业相适配的分区方式,分区方式用于对多个映射任务产生的中间处理结果进行分区;基于确定的分区方式对第一工作节点的输出进行分区;将同一分区的中间处理结果分配给同一第二工作节点。
[0010]根据本公开的第四个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。
[0011]根据本公开的第五个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。
[0012]由此,在利用MapReduce框架执行计算作业的过程中,通过确定与计算作业相适配的分区方式,基于所确定的分区方式对多个映射任务产生的中间处理结果进行分区,可以满足用户的个性化分区需求。
附图说明
[0013]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0014]图1示出了根据本公开一个实施例的分布式计算系统的结构示意图。
[0015]图2示出了利用MapReduce框架执行计算作业的过程示意性流程图。
[0016]图3示出了本公开的分布式计算方法的示意性流程图。
[0017]图4示出了将MapReduce特性转换为SQL特性后的作业执行流程图。
[0018]图5示出了根据本公开一个实施例的分布式计算装置的结构示意图。
[0019]图6示出了根据本公开的计算设备的结构示意图。
具体实施方式
[0020]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0021]很多场景下需要通过设置自定义分区方式来满足个性化的作业需求。例如,很多
写文件作业需要精确输出文件个数及精确输出文件名称。如果是简单的分布式读写作业(如MapReduce的OnlyMap作业),可以直接按映射任务(即Map任务)的数量和编号对应输出即可。但如果是涉及到表数据或文件数据的作业,通常需要将指定的数据输出到指定编号或命名的文件,即Shuffle机制需要将指定的数据分发到指定数目编号的用于执行化简任务的工作节点(即Reducer)去处理。类似的扩展场景是用户直接输出整型数据并且用该整型数据的数据值做分区器的Key,并且设置了Reducer数量,此时用户会默认数据平台支持按该Key做分区。
[0022]针对诸如上述具有个性化分区需求的作业,如果作业执行过程中的Shuffle机制是基于平台底层引擎内置的分区方式进行分区,那么在平台内置的分区方式重构了之后会造成数据错误甚至作业失败。
[0023]随着平台(如分布式大数据平台)的不断衍化升级和底层性能优化功能逐步丰富,平台不可避免地需要对内置的Partitioner(分区器)进行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式计算方法,包括:获取计算作业;将所述计算作业针对的待处理的数据切分为多个数据块;将所述计算作业划分为多个映射任务和一个或多个化简任务,并将所述映射任务和所述化简任务分配给多个工作节点,其中,每个所述映射任务对应一个数据块,分配了映射任务的第一工作节点用于对所述数据块进行处理,以得到中间处理结果,分配了化简任务的第二工作节点的输入来源于所述第一工作节点的输出;确定与所述计算作业相适配的分区方式,所述分区方式用于对所述多个映射任务产生的中间处理结果进行分区;基于确定的分区方式对所述第一工作节点的输出进行分区;将同一分区的中间处理结果分配给同一第二工作节点。2.根据权利要求1所述的分布式计算方法,其中,确定与所述计算作业相适配的分区方式的步骤包括:从分区方式集合中选取与所述计算作业相适配的分区方式,所述分区方式集合包括多个分区方式。3.根据权利要求2所述的分布式计算方法,其中,所述分区方式集合中存在至少一个第一分区方式,每个所述第一分区方式对应一种或多种数据类型,从分区方式集合中选取与所述计算作业相适配的分区方式的步骤包括:根据所述计算作业针对的数据的数据类型,从所述分区方式集合中选取与所述数据类型对应的第一分区方式。4.根据权利要求2所述的分布式计算方法,其中,从分区方式集合中选取与所述计算作业相适配的分区方式的步骤包括:根据所述计算作业的任务类型,从所述分区方式集合中选取与所述计算作业的任务类型相适配的分区方式。5.根据权利要求2所述的分布式计算方法,其中,从分区方式集合中选取与所述计算作业相适配的分区方式的步骤包括:获取第一参数配置信息,所述第一参数配置信息包括针对所述计算作业配置的分区方式;从所述分区方式集合中选取所述第一参数配置信息所表征的分区方式。6.根据权利要求1所述的分布式计算方法,其中,确定与所述计算作业相适配的分区方式的步骤包括:提供编程接口;获取用户通过所述编程接口提供的自定义程序;基于所述自定义程序确定所述计算作业的分区方式。7.根据权利要求1所述的分布式计算方法,其中,确定与所述计算作业相适配的分区方式的步骤包括:获取第二参数配置信息,所述第二参数配置信息包括一个或多个数据值;将所述数据值作为分区字段,其中,基于确定的分区方式对所述第一工作节点的输出进行分区的步骤包括:按照所述分区
字段对所述第一工作节点的输出进行分区。8.根据权利要求7所述的分布式计算方法,其中,所述第二参数配置信息还包括所述第二工作节点的数量以及所述数据值和...

【专利技术属性】
技术研发人员:李瑞盛胡进军
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1