CN103530084A - 一种数据并行排序方法和系统 - Google Patents
一种数据并行排序方法和系统 Download PDFInfo
- Publication number
- CN103530084A CN103530084A CN201310446658.0A CN201310446658A CN103530084A CN 103530084 A CN103530084 A CN 103530084A CN 201310446658 A CN201310446658 A CN 201310446658A CN 103530084 A CN103530084 A CN 103530084A
- Authority
- CN
- China
- Prior art keywords
- data
- parallel processing
- processing element
- parallel
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种数据并行排序方法和系统。该系统包括数据源、通过网络连接数据源的多个并行处理单元、以及通信接口。该方法包括将待排序的数据分成多个数据块,各并行处理单元分别获取数据块并进行采样;第一并行处理单元汇总各并行处理单元的采样数据并进行排序,根据并行处理单元的数量确定全局排序区间序列,将全局排序区间序列中各数据区间与各并行处理单元依次对应;各并行处理单元判断本单元获取的数据块中每个数据所属的数据区间并将该数据分发至对应的并行处理单元;各并行处理单元接收数据并进行局部排序;将各并行处理单元的局部排序结果顺序组合。本发明提高了大规模数据的排序速度,同时对数据量有较高的扩展性。
Description
技术领域
本发明涉及一种数据处理方法和系统,具体涉及一种数据并行排序方法和系统。
背景技术
大规模数据处理中进行数据的全局排序是一种常见操作,例如PageRank计算。传统的排序算法可以分成内排序和外排序两类。其中,内排序包括插入排序、快速排序等,需要将数据全部加载到内存中进行计算,在需要排序的数据为大规模数据的情况下,单机内存成为瓶颈。外排序主要是基于多路并归的排序算法,这种方式可以处理大规模数据,但速度较慢。目前在PageRank计算中,需要对最终的计算结果进行一个全局的排序,数据规模在上百GB,从计算规模来考虑,需要引入并行机制。但是,现有的并行排序方法在采样环节进行串行处理,因此速度和效率仍有待提高。
消息传递接口(Message Passing Interface,简称为MPI)是一种应用于并行环境的消息传递标准,通过它可以使用多机并行工作,机器之间通过网络交互数据。因此,为了更好地满足PageRank计算中大规模数据排序的需求,克服现有的串行采样的并行排序方法的缺陷,通过MPI开发了排序算法。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的充分利用并行处理及消息传递接口实现快速排序的数据并行排序方法和系统。
根据本发明的一个方面,提供了一种数据并行排序方法。本发明的数据并行排序方法包括:将待排序的数据分成多个数据块,各并行处理单元分别获取一数据块并对数据块进行采样;第一并行处理单元汇总各并行处理单元采样得到的数据并进行排序,根据并行处理单元的数量确定全局排序区间序列,将全局排序区间序列中的各个数据区间与各并行处理单元依次对应;各并行处理单元判断本单元初始获取的数据块中每个数据所属的数据区间并将该数据分发至对应的并行处理单元;各并行处理单元接收数据并对属于本单元对应的数据区间的数据进行局部排序;以及将各并行处理单元的局部排序结果顺序组合。
根据本发明的另一方面,提供了一种数据并行排序系统。本发明的数据并行排序系统包括数据源、多个并行处理单元、以及将多个并行处理单元和数据源连接起来的网络、以及与多个并行处理单元相连的并行处理单元间通信接口。其中,数据源包括数据分块装置。各个并行处理单元包括缓存器以及与缓存器相连的采样装置、排序装置和归属区间查找装置。第一并行处理单元还包括与排序装置相连的分割装置、以及与分割装置和缓冲器相连的映射装置。其中:数据分块装置,适于将待排序的数据分成多个数据块;采样装置,适于对来自数据分块装置的数据块进行采样,并将采样数据通过并行处理单元间通信接口传递至第一并行处理单元供后续汇总排序使用;排序装置,适于对数据进行排序;分割装置,适于根据并行处理单元的数量由排序后的采样数据确定全局排序区间序列;映射装置,适于将全局排序区间序列中的各数据区间与各并行处理单元依次对应得到映射表,将映射表通过并行处理单元间通信接口传递至各个并行处理单元;以及归属区间查找装置,适于根据映射表判断本单元的数据块中每个数据所属的数据区间并进一步找到对应的并行处理单元,将各条数据通过并行处理单元间通信接口发送至对应的并行处理单元进行后续的局部排序。
根据本发明的技术方案,通过消息传递接口实现数据并行排序,与现有的大规模数据排序方法相比,具有涉及环节少、简单高效的特点,在排序过程中待处理的数据和阶段性处理结果可以在多个并行处理单元之间传递,因此与现有的大规模数据并行排序方案相比,能够在排序的各个环节充分利用并行处理,不仅在归属区间查找阶段和局部排序阶段采取并行处理,而且在数据取样阶段也采取并行处理,还有可能在并行处理环节进一步并行,大大提高了大规模数据的排序速度,同时本发明的排序方案对数据量有更高的扩展性。
另外,本发明由于在排序系统中采用消息传递接口,保证了并行处理单元间的负载平衡和最小的消息传递通信开销,排序过程能够全程在并行处理单元上进行,无需客户端参与,避免了占用客户端的工作负载和缓存空间,而且阶段性处理结果不需要传输到客户端,只需要在并行处理单元之间传输,传输距离短,传输速度快,不占用客户端侧的网络流量。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明一个实施例的数据并行排序方法的流程图;
图2是根据本发明一个实施例的数据并行排序系统的组成结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出根据本发明一个实施例的并行排序方法。该方法基于包括数据源、通过网络连接数据源的多个并行处理单元、以及使多个并行处理单元能够互相交换数据的并行单元间通信接口例如MPI的系统,其中,并行处理单元的数量为两个以上。
该方法始于步骤101,为了在多个并行处理单元上进行并行排序,在数据源将需要排序的数据分块。优选地,假设并行处理单元的个数为N,则把需要排序的数据均匀划分成N块,每块数据的数据量为原始数据量的1/N。将待排序的数据均匀分块可以保证并行处理单元之间的负载平衡。每个并行处理单元从数据源获得自己的数据块。
然后,进入步骤102,每个并行处理单元对从数据源获得的数据块进行内部采样。采样的数据量越大越能体现出待排序数据的总体情况,由于本发明在数据采样阶段即采用并行处理方式,数据采样的速度和效率大大提高,所以在同样的采样速度的情况下可以从待排序的数据中采样更多数据,样本数据的量与原数据量之比提高,样本数据能够代替整体数据分布,进而使后续的局部排序过程中各个并行处理单元处理的数据量大致相等,即各个并行处理单元的工作量均衡。
该方法进入步骤103,第一并行处理单元获取各个并行处理单元采样得到的数据,对各个并行处理单元采样得到的数据进行汇总排序。另外,本领域技术人员容易理解,第一并行处理单元对汇总的采样数据进行排序可以采用任何一种现有的串行排序方法,例如插入排序、快速排序、归并排序等等。进入步骤104,根据并行处理单元的数量N由排序后的采样数据确定全局排序区间序列。优选地,第一并行处理单元从排序后的采样数据中均匀抽取部分数据作为各个数据区间的边界,以形成依次包括N个数据区间的全局排序区间序列。为了使后续局部排序时各个并行处理单元之间的工作量均衡,就要尽量保证介于各个数据区间中的数据量大致相等,所以要对排序后的采样数据进行均匀抽取。然后,进入步骤105,将该全局排序区间序列中的各个数据区间与各个并行处理单元依次对应起来,并将与对应关系有关的信息传递给各个并行处理单元。优选地,第一并行处理单元通过映射表将各个数据区间与各个并行处理单元的标识依次对应起来,并将映射表广播给各个并行处理单元。
进入步骤106,各个并行处理单元遍历本单元中的数据块,根据第一并行处理单元传递来的对应关系信息判断每条数据所属的数据区间并进一步找到对应的并行处理单元,将各条数据分发至对应的并行处理单元。
上述步骤102至步骤106是在保证全局有序的前提下为后续的局部排序做准备。其中,第一并行处理单元可以是任意一个并行处理单元。
进入步骤107,每个并行处理单元接收各个并行处理单元发来的数据,对属于本单元对应的数据区间的数据进行局部排序。本领域技术人员容易理解,各个并行处理单元对属于本单元对应的数据区间的数据进行局部排序可以采用任何一种现有的串行排序方法,例如插入排序、快速排序、归并排序等等。当然,如果并行处理单元进一步包括下一级并行处理单元的话,各个并行处理单元对属于本单元对应的数据区间的数据进行局部排序也可以采用并行排序方式。
进入步骤108,将所有并行处理单元的局部排序结果顺寻组合即得到最终的排序结果,将结果输出。实际上,就是按照并行处理单元的标识的顺序将所有并行处理单元的排序结果组合起来,得到最终的排序结果。
根据上述实施例的数据并行排序方法,通过并行单元间通信接口实现数据排序,在排序过程中待处理的数据和阶段性处理结果可以在多个并行处理单元之间传输,因此与现有的并行排序方法相比,能够在排序的各个环节充分利用并行处理,不仅在归属区间查找阶段和局部排序阶段采取并行处理而且在数据采样阶段也采取并行处理,大大提高了大规模数据的排序速度,同时这种排序方法对数据量有较高的扩展性。
图2示出根据本发明一个实施例的数据并行排序系统。该系统包括多个并行处理单元32、数据源31以及将多个并行处理单元32和数据源31连接起来的网络、以及与多个并行处理单元相连的并行处理单元间通信接口33。
其中,数据源31,例如采用HDFS(Hadoop分布式文件系统),适于存储大规模数据。数据源31包括数据分块装置311,数据分块装置311适于对待排序的数据进行分块,然后各个并行处理单元32分别从数据源31获取不同的数据块。假设并行处理单元32的个数为N,则把待排序的数据均匀划分成N块,每块数据的数据量为原始数据量的1/N。
并行处理单元间通信接口33,适于在各个并行处理单元32之间传递消息。并行处理单元间通信接口33优选采用MPI,MPI包括MPI广播模块和MPI收集模块,实现集群通信功能,还包括MPI发送模块和MPI接收模块,实现点对点通信功能。其中,MPI广播模块适于在并行处理单元32之间一对多广播同样的消息,MPI收集模块适于多对一收集各个并行处理单元32的消息,MPI发送模块和MPI接收模块相对应。
各个并行处理单元32包括缓存器320以及与缓存器320相连的采样装置321、排序装置322和归属区间查找装置325。其中,第一并行处理单元32还包括与排序装置322相连的分割装置323、以及与分割装置323和缓冲器320相连的映射装置324。
缓存器320适于对并行处理单元32中待处理的数据或处理结果进行缓存。
各个并行处理单元32上的采样装置321适于对本单元获取的数据块进行采样。
第一并行处理单元32上的排序装置322,适于将通过并行处理单元间通信接口33从各个并行处理单元32获取的采样数据汇总后进行排序,将排序后的采样数据传输至分割装置323。排序装置322可以是任何一种现有的并行排序装置,例如插入排序装置、快速排序装置、归并排序装置等等。如果并行处理单元间通信接口33是MPI,则第一并行处理单元32通过MPI收集模块从各个并行处理单元32收集采样数据提供给排序装置322进行汇总排序。作为另一选择,也可以由各个并行处理单元32分别通过MPI发送模块向第一并行处理单元32发送采样数据,由第一并行单元32通过MPI接收模块接收各个并行处理单元32发来的采样数据。
第一并行处理单元32上的分割装置323,适于根据并行处理单元32的数量N由排序后的采样数据确定全局排序区间序列,将确定的全局排序区间序列传输至映射装置324。分割装置323的具体功能为从来自排序装置322的数据中均匀抽取部分数据作为各个数据区间的边界,以形成依次包括N个数据区间的全局排序区间序列。
第一并行处理单元32上的映射装置324,适于将全局排序区间序列中的各个数据区间与各个并行处理单元32依次对应得到映射表。第一并行处理单元32将得到的映射表通过并行处理单元间通信接口33传递给各个并行处理单元32。如果并行处理单元间通信接口33是MPI,则第一并行处理单元32通过MPI广播模块将映射表广播给其他各个并行处理单元32。
各个并行处理单元32上的归属区间查找装置325,适于根据通过并行处理单元间通信接口33传递来的映射表判断本单元的数据块中每个数据属于哪个数据区间并进一步找到对应的并行处理单元32。各个并行处理单元32分别通过并行处理单元间通信接口33将逐条数据分发至对应的并行处理单元32。如果并行处理单元间通信接口33是MPI,则各个并行处理单元32将归属区间查找装置325找到归属区间的数据通过MPI发送模块发送至对应的并行处理单元32,供对应的并行处理单元32的排序装置322进行后续的局部排序。
如果需要在并行处理单元32中对数据块作进一步分块,则各个并行处理单元32还包括与采样装置321相连的数据分块装置。
根据上述实施例的排序系统由于采用并行处理单元间通信接口33例如MPI,保证了并行处理单元间的负载平衡和最小的消息传递通信开销,在排序过程中待处理数据和阶段性处理结果可以在多个并行处理单元32之间传输,因此能够在排序的各个环节充分利用并行处理,不仅在归属区间查找阶段和局部排序阶段采取并行处理而且在数据取样阶段也采取并行处理,大大提高了大规模数据的排序速度,同时这种排序系统对数据量有较高的扩展性。另外,排序过程由始至终在并行处理单元上进行,无需客户端参与,避免了占用客户端的工作负载和缓存空间,而且阶段性处理结果不需要传输到客户端,只需要在并行处理单元之间传输,传输距离短,传输速度快,不占用客户端侧的网络流量。
下面,通过一个简单的例子对本发明的技术方案做进一步说明。
数据源31在HDFS(Hadoop分布式文件系统)中,有10亿个整数{x0,x1,……,x999999999|xi∈(0,109)}需要排序,具体任务是将这10亿个整数从小到大升序排列。多个节点通过HDFS相连,各个节点为具有多核CPU的服务器,因此既可以以一个节点为一个并行处理单元32,也可以以一个节点上运行的一个线程为一个并行处理单元32。假设有n个节点,节点编号为节点0,节点1,……,节点n-1,每个节点包括24个线程,线程编号为线程0,线程1,……,线程23。并行处理单元间通信接口33是MPI。
首先是划分数据的过程101。根据节点的数量n,分布式文件系统中的数据分块装置将待排序的数据均匀划分成n块后缓存起来。每个节点从分布式文件系统获取一个不同的数据块。节点j的数据为{xk|k%n==j},其中j是k除以n的余数,从而得到:
节点0:x0,xn,x2n,……
节点1:x1,xn+1,x2n+1,……
……
节点n-1:xn-1,x2n-1,x3n-1,……
还可以进一步地,每个节点从分布式文件系统获取一个不同的数据块之后,对自己获取的数据块在节点内再进行分块,比如x0分到节点0的线程0,xn分到节点0的线程1,x2n分到节点0的线程2,等等;x1分到节点1的线程0,xn+1分到节点1的线程1,x2n+1分到节点1的线程2,等等。
然后进入内部采样的过程102。每个节点的采样模块321随机地从自己获取的数据块中抽取1/10000=105个数据。
节点0采样得到的数据:x0,x3n,x7n,……
节点1采样得到的数据:xn+1,x5n+1,x9n+1,……
……
节点n-1采样得到的数据:xn-1,x4n-1,x10n-1,……
作为另一选择,如果各个节点将本节点获取的数据块进一步分块后分配给本节点的各个线程,则可以由各个线程对本线程获取的数据块进行随机采样,然后将各线程采样得到的数据组合起来,作为节点采样的结果。
接着进入节点0对采样数据进行汇总排序的过程103。节点0通过MPI收集模块从节点0~n-1收集采样数据,汇总如下:
x0,x3n,x7n,xn+1,x5n+1,x9n+1,……xn-1,x4n-1,x10n-1,……
作为另一选择,也可以由节点0~n-1分别通过MPI发送模块向节点0发送采样数据,节点0通过MPI接收模块接收各个节点发来的采样数据。
节点0的排序模块322对汇总后的采样数据进行升序排列:x3n,xn+1,x9n+1,……,记为S。对汇总后的采样数据进行排序可以采用任何一种现有的串行排序方法,例如插入排序、快速排序、归并排序等等。
进入由排序后的采样数据确定全局排序区间序列的过程104。
在实施例1中,根据节点数n,节点0的分割装置323从排序后的采样数据中均匀抽取n-1个点作为全局排序区间序列的分割点,抽取点为split:{Sk|k=105*i/(n-1),(i=0,1,……,n-2)}。
在实施例2中,根据节点数n与节点中的线程的数量24得到线程总数24n,因此节点0的分割装置323从排序后的采样数据中均匀抽取24n-1个点作为全局排序区间序列的分割点,抽取点为split:{Sk|k=105*i/(24n-1),(i=0,1,……,24n-2)}。
本发明不限于上述这种确定全局排序区间序列的方式,还可以将排序后的采样数据均匀划分成n或24n个数据块,找到这n或24n个数据块的数据上限和下限作为全局排序区间序列的分割点。
接下来进入映射过程105。
在实施例1中,节点0的映射装置324将各个数据区间的左边界与各个节点的编号以数据区间的左边界为关键码进行哈希(hash)映射,从而使全局排序区间序列中按照边界数值从小到大排列的数据区间与按照编号顺序排列的各节点一一对应。
在实施例2中,节点0的映射装置324将各个数据区间的左边界与各个节点的编号以及节点中各个线程的编号以数据区间的左边界为关键码进行哈希(hash)映射,从而使全局排序区间序列中按照边界数值从小到大排列的数据区间与按照编号顺序排列的各节点中的各线程一一对应。
由各个数据区间的左边界形成区间边界数组,将映射表通过MPI广播模块广播给节点0~n-1,其中该映射表包括区间边界数组。
本领域技术人员容易理解,上述过程103-105也可以不在节点0上执行,而改由其他任一节点执行。
进入归属区间查找过程106。节点0~n-1每个节点的归属区间查找装置325遍历本节点中的数据块,如果在步骤101中,将数据块进一步分块后分配给各线程了的话,也可以每个线程遍历本线程中的数据块。对于每条数据x,相对于区间边界数组进行二分查找,即将x与区间边界数组中的中间结点作比较,如果x等于中间结点,则x属于以中间结点为左边界的数据区间;如果x小于中间结点,则x位于区间边界数组的前半段并在数组前半段中继续进行二分查找,直到找到x所属的数据区间,即找到x所属的数据区间的左边界;如果x大于中间结点,则x位于区间边界数组的后半段并在数组后半段中继续进行二分查找,直到找到x所属的数据区间,即找到x所属的数据区间的左边界。然而,本领域技术人员容易理解,本发明查找归属区间的方式可以不采用限于二分查找法,而采用其他查找方法,比如顺序查找法。
在实施例1中,假设在split集合中找到一个数据所属的数据区间的左边界为t,则目的节点的编号为index(t),MPI发送模块通过编号将该数据发送到对应节点。
在实施例2中,假设在split集合中找到一个数据所属的数据区间的左边界为t,则目的节点的编号为index(t)/24(算出除数)并且目的线程的编号为index(t)%24(算出余数),MPI发送模块通过编号将该数据发送到对应节点的对应线程。
进入局部排序过程107。
在实施例1中,每个节点通过MPI接收模块接收节点0~n-1发来的数据,数据接收完成后,每个节点对属于本节点对应的数据区间的所有数据进行升序排序。
在实施例2中,每个节点通过MPI接收模块接收节点0~n-1发来的数据并提供给相应的线程,数据接收完成后,每个线程对属于本线程对应的数据区间的所有数据进行升序排序。
对数据进行局部排序可以采用任何一种现有的串行排序方法,例如插入排序、快速排序、归并排序等等。
进入最终排序结果输出过程108。将各个线程的排序结果按照各线程的编号顺序通过分布式文件系统向用户顺序输出,得到最终的排序结果。
本领域技术人员容易理解,线程的数量也可以不与CPU的核数相同,可以大于或小于CPU的核数。
根据上述实施例的本发明,由于用于数据排序的并行节点进一步包括多个并行线程,进一步提高了大规模数据的排序速度,同时也进一步提高了对数据量的扩展性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的消息传递接口MPI中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种数据并行排序方法,包括:
将待排序的数据分成多个数据块,各并行处理单元分别获取一数据块并进行采样;
第一并行处理单元汇总各并行处理单元采样得到的数据并进行排序,根据并行处理单元的数量确定全局排序区间序列,将全局排序区间序列中各数据区间与各并行处理单元依次对应;
各并行处理单元判断本单元获取的数据块中每个数据所属的数据区间并将该数据分发至对应的并行处理单元;
各并行处理单元接收数据并对属于本单元对应的数据区间的数据进行局部排序;
将各并行处理单元的局部排序结果顺序组合。
2.根据权利要求1所述的数据并行排序方法,其中,所述各并行处理单元包括节点和/或节点上的线程。
3.根据权利要求2所述的数据并行排序方法,其中,所述将待排序的数据分成多个数据块并由各并行处理单元分别获取进一步包括:根据节点和/或线程的数量将待排序的数据平均分成对应数量的数据块,各节点和/或线程获取一数据块。
4.根据权利要求1所述的数据并行排序方法,其中,所述第一并行处理单元汇总各并行处理单元采样得到的数据进一步包括:第一并行处理单元从各个并行处理单元收集采样数据。
5.根据权利要求1所述的数据并行排序方法,其中,所述根据并行处理单元的数量确定全局排序区间序列进一步包括:从排序后的采样数据中均匀抽取部分数据作为各数据区间的边界。
6.根据权利要求1所述的数据并行排序方法,其中,所述将全局排序区间序列中的各数据区间与各并行处理单元依次对应进一步包括:通过哈希映射将各个数据区间的左边界与各个并行处理单元的标识依次对应起来。
7.根据权利要求1所述的数据并行排序方法,其中,所述将全局排序区间序列中的各数据区间与各并行处理单元依次对应进一步包括:第一并行处理单元将所述各数据区间与各并行处理单元之间的对应关系广播给各个并行处理单元。
8.根据权利要求1所述的数据并行排序方法,其中,所述判断本单元获取的数据块中每个数据所属的数据区间进一步包括:对于每个数据,相对于各数据区间的边界进行二分查找,得到该数据所属的数据区间。
9.根据权利要求1所述的数据并行排序方法,其中,所述每个并行处理单元对属于本单元对应的数据区间的数据进行局部排序是一种并行排序。
10.一种数据并行排序系统,包括:
数据分块装置,适于将待排序的数据分成多个数据块;
采样装置,适于对来自数据分块装置的数据块进行采样,并将采样数据通过并行处理单元间的通信接口传递至第一并行处理单元供后续汇总排序使用;
排序装置,适于对数据进行排序;
分割装置,适于根据并行处理单元的数量由排序后的采样数据确定全局排序区间序列;
映射装置,适于将全局排序区间序列中的各数据区间与各并行处理单元依次对应得到映射表,将映射表通过并行处理单元间的通信接口传递至各个并行处理单元;
归属区间查找装置,适于根据映射表判断本单元的数据块中每个数据所属的数据区间并进一步找到对应的并行处理单元,将各条数据通过并行处理单元间通信接口发送至对应的并行处理单元进行排序;
排序输出装置,适于将各并行处理单元进行排序后的结果顺序组合后输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310446658.0A CN103530084A (zh) | 2013-09-26 | 2013-09-26 | 一种数据并行排序方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310446658.0A CN103530084A (zh) | 2013-09-26 | 2013-09-26 | 一种数据并行排序方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103530084A true CN103530084A (zh) | 2014-01-22 |
Family
ID=49932133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310446658.0A Pending CN103530084A (zh) | 2013-09-26 | 2013-09-26 | 一种数据并行排序方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103530084A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103997514A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种文件并行传输的方法及系统 |
CN104123386A (zh) * | 2014-08-06 | 2014-10-29 | 浪潮(北京)电子信息产业有限公司 | 一种并行排序的方法及装置 |
CN104320382A (zh) * | 2014-09-30 | 2015-01-28 | 华为技术有限公司 | 分布式的实时流处理装置、方法和单元 |
CN105095411A (zh) * | 2015-07-09 | 2015-11-25 | 中山大学 | 一种基于app质量的app排名预测方法及系统 |
CN105302634A (zh) * | 2014-06-04 | 2016-02-03 | 华为技术有限公司 | 事件的并行处理方法及装置 |
CN106250097A (zh) * | 2016-06-22 | 2016-12-21 | 中国科学院计算技术研究所 | 一种面向大数据的加速排序装置、方法、芯片、处理器 |
CN107566288A (zh) * | 2017-08-08 | 2018-01-09 | 北京无线电测量研究所 | 一种多通道数据汇聚处理方法及系统 |
CN107729135A (zh) * | 2016-08-11 | 2018-02-23 | 阿里巴巴集团控股有限公司 | 按序进行并行数据处理的方法和装置 |
CN108874798A (zh) * | 2017-05-09 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 一种大数据排序方法和系统 |
CN109254980A (zh) * | 2018-08-20 | 2019-01-22 | 中国平安人寿保险股份有限公司 | 客户分数排序的方法、装置、计算机设备和存储介质 |
CN109657018A (zh) * | 2018-11-13 | 2019-04-19 | 平安科技(深圳)有限公司 | 一种分布式车辆行驶数据查询方法及终端设备 |
WO2019214303A1 (zh) * | 2018-05-07 | 2019-11-14 | 华为技术有限公司 | 数据批量选择的方法和装置 |
CN110618866A (zh) * | 2019-09-20 | 2019-12-27 | 北京中科寒武纪科技有限公司 | 数据处理方法及装置以及相关产品 |
CN110659290A (zh) * | 2019-09-20 | 2020-01-07 | 北京中科寒武纪科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111597054A (zh) * | 2020-07-24 | 2020-08-28 | 北京卡普拉科技有限公司 | 一种信息处理方法、系统、电子设备及存储介质 |
CN111651137A (zh) * | 2020-05-29 | 2020-09-11 | Oppo广东移动通信有限公司 | 排序方法、装置、电子装置以及计算机设备 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN112162990A (zh) * | 2020-09-30 | 2021-01-01 | 中国工商银行股份有限公司 | 业务数据跨库排序方法、装置及系统 |
CN112540985A (zh) * | 2020-12-07 | 2021-03-23 | 江苏赛融科技股份有限公司 | 基于分布式计算框架的全局排序输出系统及其方法 |
CN112861145A (zh) * | 2021-01-06 | 2021-05-28 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN112947890A (zh) * | 2021-03-09 | 2021-06-11 | 中科驭数(北京)科技有限公司 | 一种归并排序方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003256193A (ja) * | 2002-02-28 | 2003-09-10 | Nec Corp | 並列ソート装置及び並列ソート方法並びにプログラム |
US20050144167A1 (en) * | 2002-04-26 | 2005-06-30 | Nihon University School Juridical Person | Parallel merge/sort processing device, method, and program |
CN101568900A (zh) * | 2006-12-22 | 2009-10-28 | 日本电气株式会社 | 并行排序装置、方法及程序 |
CN101866277A (zh) * | 2010-06-18 | 2010-10-20 | 华为技术有限公司 | 数据排序方法和装置 |
-
2013
- 2013-09-26 CN CN201310446658.0A patent/CN103530084A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003256193A (ja) * | 2002-02-28 | 2003-09-10 | Nec Corp | 並列ソート装置及び並列ソート方法並びにプログラム |
US20050144167A1 (en) * | 2002-04-26 | 2005-06-30 | Nihon University School Juridical Person | Parallel merge/sort processing device, method, and program |
CN101568900A (zh) * | 2006-12-22 | 2009-10-28 | 日本电气株式会社 | 并行排序装置、方法及程序 |
CN101866277A (zh) * | 2010-06-18 | 2010-10-20 | 华为技术有限公司 | 数据排序方法和装置 |
Non-Patent Citations (3)
Title |
---|
MASATO EDAHIRO 等: "parallelizing fundamental algorithms such as sorting on multi-core processors for EDA acceleration", 《PROCEEDINGS OF THE 2009 ASIA AND SOUTH PACIFIC DESIGN AUTOMATION CONFERENCE》 * |
孙玉强: "多处理机环境中快速排序并行实现策略", 《计算机科学》 * |
邱涌: "并行归并排序算法及其在PC集群中的实现", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 * |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103997514A (zh) * | 2014-04-23 | 2014-08-20 | 汉柏科技有限公司 | 一种文件并行传输的方法及系统 |
CN105302634A (zh) * | 2014-06-04 | 2016-02-03 | 华为技术有限公司 | 事件的并行处理方法及装置 |
CN105302634B (zh) * | 2014-06-04 | 2019-04-26 | 华为技术有限公司 | 事件的并行处理方法及装置 |
CN104123386B (zh) * | 2014-08-06 | 2017-08-25 | 浪潮(北京)电子信息产业有限公司 | 一种并行排序的方法及装置 |
CN104123386A (zh) * | 2014-08-06 | 2014-10-29 | 浪潮(北京)电子信息产业有限公司 | 一种并行排序的方法及装置 |
CN104320382A (zh) * | 2014-09-30 | 2015-01-28 | 华为技术有限公司 | 分布式的实时流处理装置、方法和单元 |
CN105095411A (zh) * | 2015-07-09 | 2015-11-25 | 中山大学 | 一种基于app质量的app排名预测方法及系统 |
CN105095411B (zh) * | 2015-07-09 | 2018-08-24 | 中山大学 | 一种基于app质量的app排名预测方法及系统 |
CN106250097A (zh) * | 2016-06-22 | 2016-12-21 | 中国科学院计算技术研究所 | 一种面向大数据的加速排序装置、方法、芯片、处理器 |
CN107729135A (zh) * | 2016-08-11 | 2018-02-23 | 阿里巴巴集团控股有限公司 | 按序进行并行数据处理的方法和装置 |
CN107729135B (zh) * | 2016-08-11 | 2021-03-16 | 创新先进技术有限公司 | 按序进行并行数据处理的方法和装置 |
CN108874798A (zh) * | 2017-05-09 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 一种大数据排序方法和系统 |
CN107566288A (zh) * | 2017-08-08 | 2018-01-09 | 北京无线电测量研究所 | 一种多通道数据汇聚处理方法及系统 |
CN107566288B (zh) * | 2017-08-08 | 2019-12-06 | 北京无线电测量研究所 | 一种多通道数据汇聚处理方法及系统 |
WO2019214303A1 (zh) * | 2018-05-07 | 2019-11-14 | 华为技术有限公司 | 数据批量选择的方法和装置 |
CN109254980A (zh) * | 2018-08-20 | 2019-01-22 | 中国平安人寿保险股份有限公司 | 客户分数排序的方法、装置、计算机设备和存储介质 |
CN109657018A (zh) * | 2018-11-13 | 2019-04-19 | 平安科技(深圳)有限公司 | 一种分布式车辆行驶数据查询方法及终端设备 |
CN109657018B (zh) * | 2018-11-13 | 2024-05-07 | 平安科技(深圳)有限公司 | 一种分布式车辆行驶数据查询方法及终端设备 |
CN110618866A (zh) * | 2019-09-20 | 2019-12-27 | 北京中科寒武纪科技有限公司 | 数据处理方法及装置以及相关产品 |
CN110659290A (zh) * | 2019-09-20 | 2020-01-07 | 北京中科寒武纪科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111651137A (zh) * | 2020-05-29 | 2020-09-11 | Oppo广东移动通信有限公司 | 排序方法、装置、电子装置以及计算机设备 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN111597054A (zh) * | 2020-07-24 | 2020-08-28 | 北京卡普拉科技有限公司 | 一种信息处理方法、系统、电子设备及存储介质 |
CN112162990B (zh) * | 2020-09-30 | 2023-09-08 | 中国工商银行股份有限公司 | 业务数据跨库排序方法、装置及系统 |
CN112162990A (zh) * | 2020-09-30 | 2021-01-01 | 中国工商银行股份有限公司 | 业务数据跨库排序方法、装置及系统 |
CN112540985A (zh) * | 2020-12-07 | 2021-03-23 | 江苏赛融科技股份有限公司 | 基于分布式计算框架的全局排序输出系统及其方法 |
CN112540985B (zh) * | 2020-12-07 | 2023-09-26 | 江苏赛融科技股份有限公司 | 基于分布式计算框架的全局排序输出系统及其方法 |
CN112861145A (zh) * | 2021-01-06 | 2021-05-28 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN112861145B (zh) * | 2021-01-06 | 2023-12-12 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN112947890A (zh) * | 2021-03-09 | 2021-06-11 | 中科驭数(北京)科技有限公司 | 一种归并排序方法及装置 |
CN112947890B (zh) * | 2021-03-09 | 2021-11-02 | 中科驭数(北京)科技有限公司 | 一种归并排序方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103530084A (zh) | 一种数据并行排序方法和系统 | |
CN103491205B (zh) | 一种基于视频搜索的关联资源地址的推送方法和装置 | |
CN1842764A (zh) | 计算图的计算机辅助并行化 | |
CA2790479C (en) | Partitioning a search space for distributed crawling | |
JP2016515228A (ja) | 低レイテンシデータアクセス用のデータストリーム分割 | |
CN103548020A (zh) | 用于由小树进行的大小可变分层名称的最长前缀匹配的方法和系统 | |
Flick et al. | Parallel distributed memory construction of suffix and longest common prefix arrays | |
CN109002499B (zh) | 学科相关性知识点库构建方法及其系统 | |
US10902069B2 (en) | Distributed indexing and aggregation | |
CN104838376A (zh) | 为显著用户生成用于信息取回查询的摘录 | |
CN102207935A (zh) | 用于创建索引的方法和系统 | |
Rubin | Btcspark: Scalable analysis of the bitcoin blockchain using spark | |
CN103699442A (zh) | MapReduce计算框架下的可迭代式数据处理方法 | |
CN111507076A (zh) | 一种用于教学系统的共案课件制作方法、装置和终端 | |
CN106649385B (zh) | 基于HBase数据库的数据排序方法和装置 | |
Shi et al. | Partitioning dynamic graph asynchronously with distributed FENNEL | |
CN106599062A (zh) | 一种SparkSQL系统中的数据处理方法和装置 | |
JP2021517322A (ja) | トランザクション処理の方法およびサーバー、ならびにトランザクション処理のシステム | |
CN105956069A (zh) | 一种网络资讯的采集和分析方法及系统 | |
CN105389394A (zh) | 基于多个数据库集群的数据请求处理方法及装置 | |
JP2007034878A (ja) | 情報処理方法、情報処理装置および情報処理プログラム | |
CN103842990B (zh) | 基于索引的虚拟寻址的方法和设备 | |
CN105574037A (zh) | 一种信息处理方法及装置 | |
CN104052669A (zh) | 用于处理交替配置的最长前缀匹配表的装置和方法 | |
CN101977251A (zh) | 服务器端网址资源优化装置及其优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140122 |
|
RJ01 | Rejection of invention patent application after publication |