用于MapReduce的中间结果数据排序方法及系统的制作方法

文档序号:6506169阅读:327来源:国知局
用于MapReduce的中间结果数据排序方法及系统的制作方法
【专利摘要】本发明提出了一种用于MapReduce的中间结果数据的排序方法,包括以下步骤:从映射任务服务器获取映射任务产生的多个中间结果数据;根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组;分别通过N个线程对所述N组内的中间结果数据进行排序;以及将排序后的N组中间结果数据从内存中写入本地磁盘。根据本发明实施例的用于MapReduce的中间结果数据的排序方法,可有效降低MapReduce的中间结果数据从内存写入硬盘之前对多个中间数据进行排序的排序时间,有效提升排序效率。本发明还提出了一种用于MapReduce的中间结果数据的排序系统。
【专利说明】用于MapReduce的中间结果数据排序方法及系统
【技术领域】
[0001]本发明涉及云计算【技术领域】,特别涉及一种用于MapReduce的中间结果数据的排序方法及系统。
【背景技术】
[0002]当前云计算领域中,MapReduce是其中的一种简单流行但功能强大的编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce的应用非常广泛,包括:分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习等。
[0003]MapReduce不要求集群的计算节点是大型机,只要普通机器即可。MapReduce操作的数据是分布在多台机器(节点)上的海量数据,这些数据都存储在一个分布式的文件系统中,文件系统会对外提供对文件进行流式操作的一些接口。MapReduce编程模型的核心思想是分而治之,一个用MapReduce框架编写的作业通常由两部分组成,映射(Map)阶段和化简(Reduce)阶段。这两个阶段的逻辑为:
[0004]Map (映射)阶段:框架执行多个映射任务(map task),从分布式文件系统中读入对应的要处理的数据,使用map函数对每一条数据进行(映射)处理,并将结果按序写入本地磁盘。
[0005]Reduce (化简)阶段:框架执行一个或多个reduce task,通过网络获取所有由Map阶段产生的数据,使用reduce函数对其做进一步(化简)处理,将结果写到分布式文件系统中。
[0006]Map阶段的主体部分是用户自定义的map函数,它的输入为一个域上的(key, value)对,它的输出为另一域上(key, value)对的链表。
[0007]Map (kl, vl) — list (k2, v2)
[0008]map函数会并行地应用于全部输入数据,从而为每个输入(kl,vl)生成一系列(k2, v2)对。Reduce阶段的reduce函数也由用户自定义,MapReduce框架会将所有k2相同的(k2,v2)收集起来形成一组,并将所有组按一定规则分发给reduce进行处理。每个组将被应用Reduce函数,生成O个或多个值。Reduce (k2, list (v2)) — list(v3)
[0009]如图2所示,MapTask的输出辅助类都继承自MapOutputCollector,如果Mapper后续有reduce任务,系统会使用MapOutputBuffer这个继承类做为输出。这些输出被称为map的中间结果,这些中间结果可能很大,并且在交给reduce之前,需要进行排序,即每一个map的输出都是事先排好序的,这样交给reduce后reduce才可以在已经排好序的多个map输入基础上多路归并,从而让reduce的输入成为全局有序。在map端的中间结果会临时存放在一个内存buffer中,但是这个内存buffer容量有限,当buffer满了或者用量达到一定阈值就会触发spill过程,把buffer中的数据刷到硬盘上,在硬盘上生成临时的spillO, spilll文件,这些临时文件在写硬盘前需要先在内存中排好序,spill文件本身是一次spill的数据的有序排列。当map过程结束,全部数据都输出以后,mapoutputbuffer会根据硬盘上的spill文件进行多路归并,合成一个有序的最终文件file, out并且生成这个文件对应的索引文件。
[0010] 如图3所示,在map过程中,用户程序打出的record都会由mapoutputbuffer的类来接收,这个类中有一个名为buffer的byte数组,用于存放具体record中key, value序列化后的byte,存放方式是key, value连续紧凑存放,同时还有两个int数组,用于存放关于每一条record的元数据,其中一个存放的是每条record对应的keyvalue的partition,keystart, valstart,名为kvindices (中间数据索引),每一个record在buffer中的存放位置和它所属的partition就由这样一个三元组来描述,每一个三元组就是三个int变量,
每个三兀组在 int 数组中--相邻,〈partition, keystart, valstartXpartition, keysta
rt, valstart〉…另外还有一个int数组名为kvoffsets (分片位置索引),作为kvindices的索引数组,这个里面每个record只对应一个int值,这个值指向kvindices中对应的每条记录的三元组中第一个int即partition的位置。这样就构成了 record的序号
(kvoffsets) ->record 的兀数据(kvindices) ->record 实际数据(kvbuffer)的二
级索引关系。在排序的时候不需要操作在kvbuffer中的真实数据,而只需要根据索引指向读到需要比较的record的key,然后把比较结果反应到kvoffsets这个序号数组中,即只对kvoffsets排序即可,kvindices和kvbuffer中的数据物理位置不需要改变,由kvoffsets中元素的位置变化来表示排序的结果。 [0011 ] 经过排序后的数据,根据kvoffsets的顺序,从buffer中读取key和value的byte数组,写到spill文件中。但是这一过程中存在一个问题,由于多数情况下,排序的速度相比用户程序输出record的速度要慢很多,因而很容易造成当buffer满了,但是spill线程工作还没有完成,这样写数据的用户线程就会堵住,直到spill完成内存中的数据被释放,这会造成一定的延时。

【发明内容】

[0012]本发明的目的旨在至少解决所述技术缺陷之一。
[0013]为此,本发明的一个目的在于提出一种可有效降低MapReduce的中间结果数据从内存写入硬盘之前对多个中间数据进行排序的排序时间,有效提升排序效率的用于MapReduce的中间结果数据的排序方法。
[0014]本发明的另一个目的在于提出一种用于MapReduce的中间结果数据的排序系统。
[0015]为达到上述目的,本发明第一方面的实施例公开了一种用于MapReduce的中间结果数据的排序方法,包括以下步骤:从映射任务服务器获取映射任务产生的多个中间结果数据;根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组;分别通过N个线程对所述N组内的中间结果数据进行排序;以及将排序后的N组中间结果数据从内存中写入本地磁盘。
[0016]根据本发明实施例的用于MapReduce的中间结果数据的排序方法,缓解在map输出过程中,由于记录输出速度大于spill排序速度,因而缓冲区buffer因为被填满导致无法写入被迫等待spill完成释放内存所造成的延时。通过本发明实施例的用于MapReduce的中间结果数据的排序方法,利用 分治思想把中间数据排序分成小份处理,同时基于partition的分组,简化了比较逻辑,利用多线程进行排序,大大加快了排序速度,降低了写入(spill)时间,从而缓解了在spill过程中buffer被写满而不得不等待spill完成带来的延时。具体地,在spill时,待排序的所有record针对partition分组,对每一个partition内部使用单独的线程排序,例如:使用hadoop自带的wordcount对本发明实施例的排序方法进行测试,开启三线程map平均加速30%左右。
[0017]另外,根据本发明上述实施例的用于MapReduce的中间结果数据的排序方法还可以具有如下附加的技术特征:
[0018]在一些示例中,还包括:简化任务服务器从所述本地磁盘中获取排序后的N组中间数据结果,并对所述N组中间数据结果进行简化任务处理。
[0019]在一些示例中,所述根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组,进一步包括:创建分片索引二维数组;将多个所述中间结果数据所属的分片合并后存储在所述分片索引二维数组的第一维存储空间中;将每个分片位置索引存储在所述分片索引二维数组的第二维存储空间中;根据所述第一维存储空间存储的多个分片对存储在第二维存储空间中的每个分片对应的多个分片位置索引进行排序。
[0020]在一些示例中,对存储在第二维存储空间中的每个分片对应的多个分片位置索引通过一个线程进行排序。
[0021]本发明第二方面的实施例提供了一种用于MapReduce的中间结果数据的排序系统,包括:本地服务器和映射服务器,其中,所述映射服务器用于执行映射任务以生成多个中间结果数据;所述本地服务器用于从所述映射任务服务器获取所述多个中间结果数据,并根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组,并分别通过N个线程对所述N组内的中间结果数据进行排序,以及将排序后的N组中间结果数据从内存中写入本地磁盘。
[0022]根据本发明实施例的用于MapReduce的中间结果数据的排序系统,缓解在map输出过程中,由于记录输出速度大于spill排序速度,因而缓冲区buffer因为被填满导致无法写入被迫等待spill完成释放内存所造成的延时。通过本发明实施例的用于MapReduce的中间结果数据的排序系统,利用分治思想把中间数据排序分成小份处理,同时基于partition的分组,简化了比较逻辑,利用多线程进行排序,大大加快了排序速度,降低了写入(spill)时间,从而缓解了在spill过程中buffer被写满而不得不等待spill完成带来的延时。具体地,在spill时,待排序的所有record针对partition分组,对每一个partition内部使用单独的线程排序,例如:使用hadoop自带的wordcount对本发明实施例的排序方法进行测试,开启三线程map平均加速30%左右。
[0023]另外,根据本发明上述实施例的用于MapReduce的中间结果数据的排序系统还可以具有如下附加的技术特征:
[0024]在一些示例中,还包括:简化服务器,所述简化服务器用于从所述本地服务器的本地磁盘中获取排序后的N组中间数据结果,并对所述N组中间数据结果进行简化任务处理。
[0025]在一些示例中,所述本地服务器根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组,包括:创建分片索引二维数组,将多个所述中间结果数据所属的分片合并后存储在所述分片索引二维数组的第一维存储空间中,并将每个分片位置索引存储在所述分片索引二维数组的第二维存储空间中,以及根据所述第一维存储空间存储的多个分片对存储在第二维存储空间中的每个分片对应的多个分片位置索引进行排序。[0026]在一些示例中,所述本地服务器对存储在第二维存储空间中的每个分片对应的多个分片位置索引是通过一个独立的线程进行排序的。
[0027]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【专利附图】

【附图说明】
[0028]本发明所述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0029]图1是根据本发明一个实施例的用于MapReduce的中间结果数据的排序方法的流程图;
[0030]图2是现有技术中通过MapReduce产生的中间结果数据从内存写入硬盘时的流向图;
[0031]图3是现有技术中对通过MapReduce产生的中间结果数据从内存写入硬盘之前对中间结果数据进行排序的索引结构示意图;
[0032]图4是根据本发明一个实施例的用于MapReduce的中间结果数据的排序方法的对通过MapReduce产生的中间结果数据从内存写入硬盘之前对中间结果数据进行排序的索引结构示意图;以及
[0033]图5是根据本发明一个实施例的用于MapReduce的中间结果数据的排序系统的示意图。
【具体实施方式】
[0034]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0035]在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底” “内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0036]在本发明的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解所述术语的具体含义。
[0037]以下结合附图描述根据本发明实施例的用于MapReduce的中间结果数据的排序方法及系统。
[0038]图1是根据本发明一个实施例的用于MapReduce的中间结果数据的排序方法的流程图。如图1所示,根据本发明一个实施例的用于MapReduce的中间结果数据的排序方法,包括以下步骤:
[0039]步骤SlOl:从映射任务服务器获取映射任务产生的多个中间结果数据。[0040]步骤S102:根据多个中间结果数据所属的分片将多个中间结果数据分为N组。
[0041]作为一个具体的示例,根据多个中间结果数据所属的分片将多个中间结果数据分为N组,进一步包括:
[0042]1、创建分片索引二维数组。
[0043]2、将多个中间结果数据所属的分片合并后存储在分片索引二维数组的第一维存储空间中。
[0044]3、将每个分片位置索引存储在分片索引二维数组的第二维存储空间中。
[0045]4、根据第一维存储空间存储的多个分片对存储在第二维存储空间中的每个分片对应的多个分片位置索引进行排序。
[0046]具体而言,如图3所示,通过对中间结果数据从内存写入(spill)硬盘时排序的【背景技术】可知,排序过程是使用分片位置索引(kvoffsets)作为索弓丨,指向具体内存(buffer)中的key实际数据进行比较,然后交换kvoffsets中的索引位置,从而实现最终这次spill的所有record优先按照分片partition排序,然后partition再按照key定义的comparator排序的逻辑。并且整个过程都是由单线程完成。假设record总数量为n,使用快速排序,时间复杂度是nlogn。
[0047]由于比较规则每一次元素的两两比较需要两步比较逻辑,并且要一次性排序全部的record,对于具体的排序算法而言如果η比较大,在比较逻辑也复杂的情况下都不会有很好的效果。而如果能把待排序的record分成r份,对每一份的部分record排序,那么时
间复杂度就是为》即数据规模越小,排序速度的提高是非线性的。对于这里
r rr,
的record来说,最合适的是在排序前就按照分片partition数量分成r份,则排序只需要对同partition内部的key进行比较,不需要再比较分片partition,可以把两步逻辑减少到一步。并且,如果对已经按照分片partition分好的record,每一个partition使用一个单独的线程排序属于这个partition的数据,partition之间互不干扰,则可以实现多线程并行排序。
[0048]更为具体地,例如在mapoutputbuffer类中加入一个辅助的二维数组作为新索弓I,即分片索引二维数组,记为:partitionIndexes[][],第一维是分片partition,第二维是该partition对应的record在中间数据索引:kvindices的索引,在每一次record写入时,记录该record对应的partition计数加I,当每次spill开始时,根据partition计数初始化分片索引二维数组partitionlndexes的第二维元素数量,然后过一遍需要spill区间的kvoffsets,把每一条记录在kvindices里的索引填入partitionlndexes口 []的对应partition对应的数组中,这样最终就把分片位置索引kvoffsets中要排序的record在partitionlndexes[][]中都重新建立了一遍新的索引和映射关系。
[0049]步骤S103:分别通过N个线程对N组内的中间结果数据进行排序。例如:如图4所示,仓Il建多个线程(如ThreadO至Thread3),对每个分片partition内部的record进行排序,即对partitionlndexes的第二维数组排序即可。
[0050]步骤S104:将排 序后的N组中间结果数据从内存中写入本地磁盘。在本发明的一个实施例中,对存储在第二维存储空间中的每个分片对应的多个分片位置索引通过一个线程进行排序。例如:在步骤S103中排好序后,使用partitionlndexes作为输出到硬盘的索弓丨,从第一维的O下标开始,代表partitionO,依次如果有数据则把在内存buffer中对应的keyvalue写入硬盘即可。
[0051 ] 在本发明的一个实施例中,还包括:简化任务服务器从本地磁盘中获取排序后的N组中间数据结果,并对N组中间数据结果进行简化任务处理。即对排序后存储在本地硬盘中的中间结果数据进行化简任务(Reduce Task)。
[0052]根据本发明实施例的用于MapReduce的中间结果数据的排序方法,缓解在map输出过程中,由于记录输出速度大于spill排序速度,因而缓冲区buffer因为被填满导致无法写入被迫等待spill完成释放内存所造成的延时。通过本发明实施例的用于MapReduce的中间结果数据的排序方法,利用分治思想把中间数据排序分成小份处理,同时基于partition的分组,简化了比较逻辑,利用多线程进行排序,大大加快了排序速度,降低了写入(spill)时间,从而缓解了在spill过程中buffer被写满而不得不等待spill完成带来的延时。具体地,在spill时,待排序的所有record针对partition分组,对每一个partition内部使用单独的线程排序,例如:使用hadoop自带的wordcount对本发明实施例的排序方法进行测试,开启三线程map平均加速30%左右。
[0053]图5是根据本发明一个实施例的用于MapReduce的中间结果数据的排序系统的示意图。如图5所示,根据本发明一个实施例的用于MapReduce的中间结果数据的排序系统500,包括:本地服务器510和映射服务器520。 [0054]其中,映射服务器520用于执行映射任务以生成多个中间结果数据。本地服务器510用于从映射任务服务器520获取多个中间结果数据,并根据多个中间结果数据所属的分片将多个中间结果数据分为N组,并分别通过N个线程对N组内的中间结果数据进行排序,以及将排序后的N组中间结果数据从内存中写入本地磁盘。
[0055]作为一个具体的示例,本地服务器510根据多个中间结果数据所属的分片将多个所述中间结果数据分为N组,包括:创建分片索引二维数组,将多个中间结果数据所属的分片合并后存储在分片索引二维数组的第一维存储空间中,并将每个分片位置索引存储在分片索引二维数组的第二维存储空间中,以及根据第一维存储空间存储的多个分片对存储在第二维存储空间中的每个分片对应的多个分片位置索引进行排序。
[0056]具体而言,如图3所示,通过对中间结果数据从内存写入(spill)硬盘时排序的【背景技术】可知,排序过程是使用分片位置索引(kvoffsets)作为索弓丨,指向具体内存(buffer)中的key实际数据进行比较,然后交换kvoffsets中的索引位置,从而实现最终这次spill的所有record优先按照分片partition排序,然后partition再按照key定义的comparator排序的逻辑。并且整个过程都是由单线程完成。假设record总数量为n,使用快速排序,时间复杂度是nlogn。
[0057]由于比较规则每一次元素的两两比较需要两步比较逻辑,并且要一次性排序全部的record,对于具体的排序算法而言如果η比 较大,在比较逻辑也复杂的情况下都不会有很好的效果。而如果能把待排序的record分成r份,对每一份的部分record排序,那么时
间复杂度就是〃即数据规模越小,排序速度的提高是非线性的。对于这里 的record来说,最合适的是在排序前就按照分片partition数量分成r份,则排序只需要对同partition内部的key进行比较,不需要再比较分片partition,可以把两步逻辑减少到一步。并且,如果对已经按照分片partition分好的record,每一个partition使用一个单独的线程排序属于这个partition的数据,partition之间互不干扰,则可以实现多线程并行排序。
[0058]更为具体地,例如在mapoutputbuffer类中加入一个辅助的二维数组作为新索弓I,即分片索引二维数组,记为:partitionIndexes口 □,第一维是分片partition,第二维是该partition对应的record在中间数据索引:kvindices的索弓I,在每一次record写入时,记录该record对应的partition计数加I,当每次spill开始时,根据partition计数初始化分片索引二维数组partitionlndexes的第二维元素数量,然后过一遍需要spill区间的kvoffsets,把每一条记录在kvindices里的索引填入partitionlndexes口 []的对应partition对应的数组中,这样最终就把分片位置索引kvoffsets中要排序的record在partitionlndexes[][]中都重新建立了一遍新的索引和映射关系。
[0059]进一步地。如图4所示,仓Ij建多个线程(如ThreadO至Thread3),对每个分片partition内部的record进行排序,即对partitionlndexes的第二维数组排序即可。
[0060]在本发明的一个实施例中,本地服务器510对存储在第二维存储空间中的每个分片对应的多个分片位置索引通过一个线程进行排序。例如:使用partitionlndexes作为输出到硬盘的索引,从第一维的O下标开始,代表partitionO,依次如果有数据则把在内存buffer中对应的keyvalue写入硬盘即可。
[0061]结合图5所示,本发明实施例的用于MapReduce的中间结果数据的排序系统500还包括:简化服务器530。简化服务器530用于从本地服务器510的本地磁盘中获取排序后的N组中间数据结果,并对N组中间数据结果进行简化任务处理。即对排序后存储在本地硬盘中的中间结果数据进行化简任务(Reduce Task)。
[0062]根据本发明实施例的用于MapReduce的中间结果数据的排序系统,缓解在map输出过程中,由于记录输出速度大于spill排序速度,因而缓冲区buffer因为被填满导致无法写入被迫等待spill完成释放内存所造成的延时。通过本发明实施例的用于MapReduce的中间结果数据的排序系统,利用分治思想把中间数据排序分成小份处理,同时基于partition的分组,简化了比较逻辑,利用多线程进行排序,大大加快了排序速度,降低了写入(spill)时间,从而缓解了在spill过程中buffer被写满而不得不等待spill完成带来的延时。具体地,在spill时,待排序的所有record针对partition分组,对每一个partition内部使用单独的线程排序,例如:使用hadoop自带的wordcount对本发明实施例的排序方法进行测试,开启三线程map平均加速30%左右。
[0063]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对所述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0064]尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
【权利要求】
1.一种用于MapReduce的中间结果数据的排序方法,其特征在于,包括以下步骤: 从映射任务服务器获取映射任务产生的多个中间结果数据; 根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组; 分别通过N个线程对所述N组内的中间结果数据进行排序;以及 将排序后的N组中间结果数据从内存中写入本地磁盘。
2.根据权利要求1所述的用于MapReduce的中间结果数据的排序方法,其特征在于,还包括: 简化任务服务器从所述本地磁盘中获取排序后的N组中间数据结果,并对所述N组中间数据结果进行简化任务处理。
3.根据权利要求1所述的用于MapReduce的中间结果数据的排序方法,其特征在于,所述根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组,进一步包括: 创建分片索引二维数组; 将多个所述中间结果数据所属的分片合并后存储在所述分片索引二维数组的第一维存储空间中; 将每个分片位置索引存储在所述分片索引二维数组的第二维存储空间中; 根据所述第一维存储空间存储的多个分片对存储在第二维存储空间中的每个分片对应的多个分片位置索引进行排.序。
4.根据权利要求3所述的用于MapReduce的中间结果数据的排序方法,其特征在于,对存储在第二维存储空间中的每个分片对应的多个分片位置索引通过一个线程进行排序。
5.一种用于MapReduce的中间结果数据的排序系统,其特征在于,包括:本地服务器和映射服务器,其中, 所述映射服务器用于执行映射任务以生成多个中间结果数据; 所述本地服务器用于从所述映射任务服务器获取所述多个中间结果数据,并根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组,并分别通过N个线程对所述N组内的中间结果数据进行排序,以及将排序后的N组中间结果数据从内存中写入本地磁盘。
6.根据权利要求1所述的用于MapReduce的中间结果数据的排序系统,其特征在于,还包括: 简化服务器,所述简化服务器用于从所述本地服务器的本地磁盘中获取排序后的N组中间数据结果,并对所述N组中间数据结果进行简化任务处理。
7.根据权利要求5所述的用于MapReduce的中间结果数据的排序系统,其特征在于,所述本地服务器根据多个所述中间结果数据所属的分片将多个所述中间结果数据分为N组,包括:创建分片索引二维数组,将多个所述中间结果数据所属的分片合并后存储在所述分片索引二维数组的第一维存储空间中,并将每个分片位置索引存储在所述分片索引二维数组的第二维存储空间中,以及根据所述第一维存储空间存储的多个分片对存储在第二维存储空间中的每个分片对应的多个分片位置索引进行排序。
8.根据权利要求7所述的用于MapReduce的中间结果数据的排序系统,其特征在于,所述本地服务器对存储在第二维存储空间中的每个分片对应的多个分片位置索引是通过一个独立的线程 进行排序的。
【文档编号】G06F17/30GK103440246SQ201310305931
【公开日】2013年12月11日 申请日期:2013年7月19日 优先权日:2013年7月19日
【发明者】王猛, 杨毅, 王谦 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1