[发明专利]MapReduce计算框架中的高性能排序方法有效
申请号: | 201410145069.3 | 申请日: | 2014-04-10 |
公开(公告)号: | CN103995827B | 公开(公告)日: | 2017-08-04 |
发明(设计)人: | 蒋达晟;陈薇;王腾蛟 | 申请(专利权)人: | 北京大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙)11200 | 代理人: | 冯艺东 |
地址: | 100871 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | mapreduce 计算 框架 中的 性能 排序 方法 | ||
1.一种MapReduce计算框架中的高性能排序方法,其步骤包括:
1)Map任务从HDFS上读取文件,构造输入数据的key/value对;
2)对输入数据执行用户自定义Map函数并输出中间结果的key/value对,并计算key所对应的partition;对内存中每个partition设置对应的缓冲链,将中间结果的key/value对首先计算长度,然后插入到缓冲链中;
3)当内存无法放下所有中间结果的key/value对时,按照partition的顺序,输出所有缓冲链到本地文件;
4)对经过上述步骤后在内存和本地磁盘上形成的一个或多个未排序的结果按照partition的顺序进行归并,输出成一个完整的按照partition进行分段的本地文件;
5)Reduce任务通过任务调度器获得Map任务结束的信息,向负责该Map数据托管的进程发送http请求,拖取该Map输出的中间数据中属于该Reduce的部分,将这些数据根据其大小选择放于内存或放于本地磁盘;
6)将内存或磁盘中的中间数据读入内存中的排序缓冲池,当排序缓冲池满时,对整个缓冲池进行排序;
7)对于中间数据无法全部放在一个排序缓冲池中的情况,在排序后将数据写出到本地文件中。
2.如权利要求1所述的方法,其特征在于,还包括如下步骤:
8)对内存和本地文件中的有序结果进行归并,归并结果作为用户自定义Reduce函数的输入;
9)Reduce函数对相同key下的所有value执行操作,生成输出数据的key/value对并写入HDFS。
3.如权利要求1或2所述的方法,其特征在于:步骤6)还包括:对于大多数作业使用的整形或者字符数组类型的key,抽取key中能够保序的4字节作为低32位,和该条记录本身4字节的二级索引作为高32位进行拼接,形成一个8字节的长整形作为新的key。
4.如权利要求3所述的方法,其特征在于:在所述8字节上使用基数排序,使得其从key中抽取的4字节有序。
5.如权利要求4所述的方法,其特征在于:所述基数排序为非递归版本,输入为两个长整形的数组,一个用于存放原始数据,一个用于算法的临时空间,算法执行后的结果为长整形数组中低32位整形有序。
6.如权利要求4所述的方法,其特征在于:获取基数排序后的二级索引,再对其进行快速排序保证整体记录的有序性。
7.如权利要求3所述的方法,其特征在于:抽取key中4字节的方法是:对于整数即其本身;对于字符数组类型的key为其排序序列的前4个字节,以整数对待,并在最高位取反。
8.如权利要求3所述的方法,其特征在于:步骤6)还包括:对于无法抽取保序4字节的key类型,构建二级索引,使用快速排序进行整体记录的排序。
9.如权利要求1或2所述的方法,其特征在于,步骤6)还包括:采用双缓冲结构将传输的内容添加到排序缓冲池中,以避免阻塞:当某一个排序缓冲满后,异步地进行排序并写出,同时另一个排序缓冲继续接收传输的数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410145069.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:列车能量回馈式主动径向转向架
- 下一篇:一种多轮系刹车机轮的刹车控制系统