[发明专利]用于MapReduce的中间结果数据排序方法及系统在审
申请号: | 201310305931.8 | 申请日: | 2013-07-19 |
公开(公告)号: | CN103440246A | 公开(公告)日: | 2013-12-11 |
发明(设计)人: | 王猛;杨毅;王谦 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/08 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 宋合成 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 mapreduce 中间 结果 数据 排序 方法 系统 | ||
技术领域
本发明涉及云计算技术领域,特别涉及一种用于MapReduce的中间结果数据的排序方法及系统。
背景技术
当前云计算领域中,MapReduce是其中的一种简单流行但功能强大的编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce的应用非常广泛,包括:分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习等。
MapReduce不要求集群的计算节点是大型机,只要普通机器即可。MapReduce操作的数据是分布在多台机器(节点)上的海量数据,这些数据都存储在一个分布式的文件系统中,文件系统会对外提供对文件进行流式操作的一些接口。MapReduce编程模型的核心思想是分而治之,一个用MapReduce框架编写的作业通常由两部分组成,映射(Map)阶段和化简(Reduce)阶段。这两个阶段的逻辑为:
Map(映射)阶段:框架执行多个映射任务(map task),从分布式文件系统中读入对应的要处理的数据,使用map函数对每一条数据进行(映射)处理,并将结果按序写入本地磁盘。
Reduce(化简)阶段:框架执行一个或多个reduce task,通过网络获取所有由Map阶段产生的数据,使用reduce函数对其做进一步(化简)处理,将结果写到分布式文件系统中。
Map阶段的主体部分是用户自定义的map函数,它的输入为一个域上的(key,value)对,它的输出为另一域上(key,value)对的链表。
Map(k1,v1)→list(k2,v2)
map函数会并行地应用于全部输入数据,从而为每个输入(k1,v1)生成一系列(k2,v2)对。Reduce阶段的reduce函数也由用户自定义,MapReduce框架会将所有k2相同的(k2,v2)收集起来形成一组,并将所有组按一定规则分发给reduce进行处理。每个组将被应用Reduce函数,生成0个或多个值。Reduce(k2,list(v2))→list(v3)
如图2所示,MapTask的输出辅助类都继承自MapOutputCollector,如果Mapper后续有reduce任务,系统会使用MapOutputBuffer这个继承类做为输出。这些输出被称为map的中间结果,这些中间结果可能很大,并且在交给reduce之前,需要进行排序,即每一个map的输出都是事先排好序的,这样交给reduce后reduce才可以在已经排好序的多个map输入基础上多路归并,从而让reduce的输入成为全局有序。在map端的中间结果会临时存放在一个内存buffer中,但是这个内存buffer容量有限,当buffer满了或者用量达到一定阈值就会触发spill过程,把buffer中的数据刷到硬盘上,在硬盘上生成临时的spill0,spill1文件,这些临时文件在写硬盘前需要先在内存中排好序,spill文件本身是一次spill的数据的有序排列。当map过程结束,全部数据都输出以后,mapoutputbuffer会根据硬盘上的spill文件进行多路归并,合成一个有序的最终文件file.out并且生成这个文件对应的索引文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310305931.8/2.html,转载请声明来源钻瓜专利网。