[发明专利]MapReduce计算框架中的高性能排序方法有效
申请号: | 201410145069.3 | 申请日: | 2014-04-10 |
公开(公告)号: | CN103995827B | 公开(公告)日: | 2017-08-04 |
发明(设计)人: | 蒋达晟;陈薇;王腾蛟 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙)11200 | 代理人: | 冯艺东 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | mapreduce 计算 框架 中的 性能 排序 方法 | ||
技术领域
本发明属于信息技术领域,涉及一种对分布式计算框架的优化方法,特别涉及一种在MapReduce计算框架中提高排序性能的方法。
背景技术
MapReduce是分布式计算中的一种标准框架,但在资源消耗方面,现有MapReduce框架并不高效,导致大量集群资源被浪费。
现有MapReduce框架中需要对中间数据的key/value对进行排序,并且排序构成了现有计算框架中主要的资源消耗。我们以MapReduce的开源实现hadoop为例,说明上述问题。
如图1所示,为传统MapReduce数据流程示意图。其中Hadoop文件系统(简称HDFS,Hadoop File System)负责数据的分布式存储。计算框架所执行作业从HDFS读入数据经过处理后再写入到HDFS。在计算框架内部分为Map和Reduce两个阶段,Map阶段将HDFS上的数据执行用户自定义的Map函数,然后对输出的中间数据首先放入内存,然后排序后写入本地磁盘。在Reduce阶段,每个Reduce接收来自各个Map的排序后的中间数据然后进行归并。框架对同一key下的所有value调用用户自定义的Reduce函数进行计算后写入到HDFS。具体的数据流程可以参见图1。
在如图1所示的原有的数据流程中,排序所需要的工作量3,5,7,8消耗了大部分的框架CPU资源。这种消耗又可以分为内存排序和多路归并两个阶段。
1、流程3中对中间数据进行基于内存的二级索引快速排序。排序的过程实际上是对16字节的索引进行排序,索引为一个四元组<id,partition(划分),key offset,value offset>。当两个这样的四元组进行比较时首先比较两条记录的partition,构成一个划分升序的序列。只有当划分一致时再根据<key offset,value offset>找到对应的key进行字节比较。大量冗余的划分比较以及O(nlogn)复杂度的代价使得这一部分效率很低。
2、流程5,7,8中对内存或磁盘上的有序数据进行多路归并排序。由于在MapReduce计算框架中需要保证内存有限时对数据依旧可以处理,因此基于磁盘的归并排序是框架必不可少的一部分。这一部分的算法实现的复杂度为O(nlogm),其中n为记录数而m为归并路数。由于整体所需要排序的记录数固定,因此这一部分是否高效取决于归并路数,而归并路数在现有实现中其最小值和map任务的数目相当。对于map任务的数目较大的作业,这部分的代价会高于第一部分的代价并消耗大部分资源。
因此,在现有MapReduce计算框架中进行排序的两个阶段因为算法的选择或是处理流程上的不当导致都不高效,而排序操作又对于每一个作业都必不可少,造成了大量的资源浪费。
发明内容
本发明目的在于提出一种在MapReduce计算框架中进行的高性能排序方法,能够降低框架整体的CPU资源消耗,提高集群整体有效利用率。
本发明的MapReduce计算框架中的高性能排序方法,其步骤包括:
1、Map任务从HDFS上读取文件,构造输入数据的key/value对;
2、对输入数据执行用户自定义Map函数并输出中间结果的key/value对,并计算key所对应的划分;对内存中每个partition设置对应的缓冲链,将中间结果的key/value对首先计算长度,然后插入到缓冲链中;
3、当内存无法放下所有中间结果的key/value对时,按照划分的顺序,输出所有缓冲链到本地文件;
4、对经过上述步骤后在内存和本地磁盘上形成的一个或多个未排序的结果按照partition的顺序进行归并,输出成一个完整的按照划分进行分段的本地文件;
5、Reduce任务通过任务调度器获得Map任务结束的信息,向负责该Map数据托管的进程发送http请求,拖取该Map输出的中间数据中属于该Reduce的部分,将这些数据根据其大小选择放于内存或放于本地磁盘;
6、将内存或磁盘中的中间数据读入内存中的排序缓冲池,当排序缓冲池满时,对整个缓冲池进行排序;
7、对于中间数据无法全部放在一个排序缓冲池中的情况,在排序后将数据写出到本地文件中。
进一步地,上述方法还包括如下步骤:
8、对内存和本地文件中的有序结果进行归并,归并结果作为用户自定义Reduce函数的输入;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410145069.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:列车能量回馈式主动径向转向架
- 下一篇:一种多轮系刹车机轮的刹车控制系统