一种基于映射聚合的分布式计算作业的实现方法及装置制造方法及图纸

技术编号:12617407 阅读:108 留言:0更新日期:2015-12-30 14:29
一种基于映射聚合的分布式计算的实现方法和装置;所述实现方法至少包括两个映射计算任务;其中,还包括至少一个连接计算任务;所述连接计算任务包括如下步骤:接收来自分布式计算作业的至少两个映射计算任务的输出数据,作为连接计算任务的输入;对所述接收的输入数据执行连接运算;将所述连接运算的结果格式化为输出文件格式输出或存储至分布式文件系统中。本申请的方法使得在分布式计算平台的关系运算具有简单、灵活的特点。

【技术实现步骤摘要】

本申请涉及分布式计算系统,具体涉及一种基于映射聚合的分布式计算作业的实 现方法及装置。
技术介绍
随着互联网的发展,人类正式进入了信息爆炸时期的。海量的信息在很多应用都 会出现,比如一些社交网络应用中记录用户行为日志通常都是以GB、TB或PB为单位的,有 的情况下数据量甚至更高。常规的单机计算模式已经不能支撑如此巨大的数据量。 在传统的数据计算中,在一个机器上对数据进行计算对于机器当前的配置而言是 完全可以支撑的。例如,常见的服务器内存是100G,把所有计算数据都缓存进内存进行科学 计算是可以实现的。但是,对于一些应用的用户日志是以TB为单位的数据的情形,这些数 据是不可能一次性的全部缓存进内存进行计算的;而即使可以对服务器的内存进行扩充, 但是对硬件的要求非常高,运算耗时也非常长,也即运算代价是非常大的。此时一种可行的 方案是通过一定的运算机制把计算任务分担到多台机器上,让每台机器都承担一部分的计 算和数据存储的任务。这就降低了对单机的配置要求,可以使用普通的机器进行科学计算。 也就是说,计算必须以分布式的把巨大的计算任务分成小的单机可以承受的计算任务。 但是,分布式计算的开发以及维护复杂而多变,需要考虑的问题非常多,诸如,分 布式计算时数据的拆分与分配,计算的合并,计算节点错误的处理,计算过程中的通信等。 上述的开发工作,在每次计算时都需要开发人员从头统筹考虑,这对开发人员的要求是非 常高的。基于此,分布式计算框架应运而生,开发人员通过分布式框架将计算的细节进行封 装,并提供相应的接口,后续开发人员仅仅需要考虑与现有框架的匹配,在计算框架的架构 下进行任务处理即可,无需理会分布式计算过程中各种问题和计算异常问题。 -种典型的分布式计算框架为map(映射)-reduce(聚合)分布式计算框架(也称 为计算模型)。map-reduce分布式计算框架的基本原理如下:在map-reduce计算框架中, 在接收到任务之后,首先将一次任务分解成若干计算单元,每一次计算单元请求,被称为作 业。为了完成这个作业,它进行两步走的战略,首先是将其拆分成若干个map任务,分配到 不同的机器上去执行,每一个map任务拿输入文件的一部分作为自己的输入,经过一些计 算,生成某种格式的中间文件,这种格式,与最终所需的文件格式完全一致,但是仅仅包含 一部分数据。因此,等到所有map任务完成后,它会进入下一个步骤,用以合并这些中间文 件获得最后的输出文件。此时,系统会生成若干个reduce任务,同样也是分配到不同的机 器去执行,它的目标,就是将若干个map任务生成的中间文件为汇总到最后的输出文件中 去。当然,这个汇总不总会像1+1 = 2那么直接了当,这也就是reduce任务的价值所在。经 过如上步骤,最终,作业完成,所需的目标文件生成。整个算法的关键,就在于增加了一个中 间文件生成的流程,大大提高了灵活性,使其分布式扩展性得到了保证。 然而,采用上述的map-reduce框架实现关系运算有很大的局限性。一些复杂关系 运算需要多个map-reduce作业配合才能完成,这使得运算过程冗长复杂。而一些只需要一 级任务完成的简单关系运算也必须严格遵守map-reduce计算框架。此外,map-reduce计 算框架的接口太过简单,只能完成两级任务结构,而一些功能需要多个任务才能实现,上述 这些局限性对关系运算实现的灵活性和性能产生了很大的影响。
技术实现思路
本申请提供一种基于映射聚合的分布式计算的实现方法,以解决现有计算结构框 架中存在的上述问题。 本申请的方法包括一种基于映射聚合的分布式计算的实现方法,所述实现方法至 少包括两个映射计算任务;其中,还包括至少一个连接计算任务;所述连接计算任务包括 如下步骤:接收来自分布式计算作业的至少两个映射计算任务的输出数据,作为连接计算任 务的输入; 对所述接收的输入数据执行连接运算; 将所述连接运算的结果格式化为输出文件格式输出或存储至分布式文件系统中。 可选的,所述接收来分布式计算作业的至少两个映射计算任务的输出数据作为输 入具体包括: 接收来自不同分布式计算作业的至少两个初始映射计算任务的输出作为输入。 可选的,所述接收来不同自分布式计算作业的至少两个初始映射计算任务的输出 数据作为输入的步骤中,每一映射计算任务包括如下步骤: 获取根据分布式计算作业数据大小对该分布式计算作业进行切分而形成的块数 据,作为映射计算任务的输入; 按照配置的格式读取并解析所述作为映射计算任务的输入的块数据; 对所述块数据执行映射操作,形成相应的中间键值对集合; 将生成的所述中间键值对集合按照设定的格式输出,并将该输出作为所述连接计 算任务的输入。 可选的,所述将生成的所述中间键值对集合按照设定的格式输出包括: 将生成的所述中间键值对集合中的数据按照设定的计算规则均匀分配内存不同 区域中暂存,每一区域成为一个桶; 对每一桶中的数据记录按照选定的字段元素进行排序; 其中,桶的数目与该分布式式计算的映射任务相应的规约任务数目相一致。 可选的,将生成的所述中间键值对集合中的数据按照设定的计算规则均匀分配到 不同的桶中具体包括: 将生成的所述中间键值对集合中的数据按照设定的hash计算规则均匀分配到不 同区域中暂存。 可选的,所述将生成的所述中间键值对集合按照设定的格式输出包括: 将所述将生成的所述中间键值对集合中的数据按照设定的规则进行分组; 将每一组数据分配到内存中的不同区域中暂存,每一区域称为一个桶; 对每一桶中的数据记录按照选定的字段元素进行排序; 其中,分组的数目和桶的数目均与该分布式式计算的映射任务相应的规约任务数 目相一致。 可选的,所述对所述接收的输入数据执行连接运算包括: 对于接收的来自每一映射计算任务的输出数据,依据连接操作主键值并按照相同 的规则进行排序; 对接收到的排序后的数据分别进行分组; 选取来自于任一映射计算任务的任一分组数据,该分组数据称为第一分组数据; 将所述第一分组数据分别与所述其它映射计算任务的分组数据按照所述的排序 逐一进行如下判断:判断所述第一分组数据是否与该其它映射计算任务的分组数据满足连 接条件; 若满足,则对所述两组数据执行连接操作,并不再对该其它映射计算任务的剩余 分组进行判断; 将所述第一分组数据的所有分组分别与其它所有映射计算任务的分组数据进行 上述判断和连接操作,直至所有映射计算任务的所有分组数据均与相应的分组数据执行了 所述判断及连接操作。 可选的,所述连接操作包括内连接和外连接。 可选的,所述连接操作为内连接, 所述对所述两组数据执行连接操作具体包括对所述两组数据做笛卡尔积; 相应的,在第一分组数据与该其它映射计算任务的分组数据满足不满足连接条件 时,舍弃该其它映射计算任务的该分组数据。 可选的,所述依据连接操作主键值并按照相同的规则进行排序具体包括: 依据连接操作的主键值按照主键值由小到大或由大到小或主键值按照其他特定 的顺序进行排序。 可选的,还包括聚合计算任务; 相应的,所述将所述连接运算的结果格式化为输出文件格式输出或存储至分布式 文件系统中具体为将所述连接运算的结果格式化为输出文件格式输出;且,将所述连接运 算的结果格式化本文档来自技高网
...

【技术保护点】
一种基于映射聚合的分布式计算的实现方法,所述实现方法至少包括两个映射计算任务;其特征在于,还包括至少一个连接计算任务;所述连接计算任务包括如下步骤:接收来自分布式计算作业的至少两个映射计算任务的输出数据,作为连接计算任务的输入;对所述接收的输入数据执行连接运算;将所述连接运算的结果格式化为输出文件格式输出或存储至分布式文件系统中。

【技术特征摘要】

【专利技术属性】
技术研发人员:路璐梁迎辉徐常亮
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1