CN111737540A - 一种应用于分布式计算节点集群的图数据处理方法和介质 - Google Patents
一种应用于分布式计算节点集群的图数据处理方法和介质 Download PDFInfo
- Publication number
- CN111737540A CN111737540A CN202010460064.5A CN202010460064A CN111737540A CN 111737540 A CN111737540 A CN 111737540A CN 202010460064 A CN202010460064 A CN 202010460064A CN 111737540 A CN111737540 A CN 111737540A
- Authority
- CN
- China
- Prior art keywords
- vertex
- computing node
- local
- layer
- vertexes
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供了一种图数据处理方法,包括:S1、获取包含多个顶点的图数据,按顶点的出度由小到大的顺序对顶点排序并将排序序号作为第一重排序ID;S2、根据第一重排序ID将图数据的顶点按预设粒度以轮询方式依次分配到分布式计算节点集群中的每一个分布式计算节点;S3、计算节点使用混合BFS算法对其获得的部分图数据进行遍历,每层遍历后各计算节点得到局部的下一层活跃顶点集;S4、每层遍历后相邻计算节点间进行环形通信以传递局部的下一层活跃顶点集,在部分层遍历后传递局部的下一层活跃顶点集之前,确定本次待传递的局部的下一层活跃顶点集的压缩方式,本发明通过顶点的出度对顶点ID进行重排序、数据压缩和环形通信,提高了通信效率。
Description
技术领域
本发明涉及图数据处理领域,具体来说涉及基于宽度优先搜索的分布式图处理方法,更具体地说,涉及一种应用于分布式计算节点集群的图数据处理方法和介质。
背景技术
图(Graph)是表示元素(人、路口、文献等)之间关系的数学对象。现实生活中许多应用场景需要用图数据结构表示,如蛋白质结构预测、最短时间路径、科技文献引用关系、社交网络分析等。
宽度优先算法(Breadth First Search,简称BFS算法)是一种经典的图遍历算法。传统的BFS算法采取自顶向下(Top-down)的思路,通过父节点查找子节点。BFS算法应用具有数据局部性差、计算访存比低、并行效率低和拓展性差等数据密集型应用的典型特征。2011年,Beamer提出了一种自底向上(Bottom-up)的BFS遍历算法,通过结合自顶向下算法(Top-down算法),实现了方向性优化的BFS算法,减少了搜索过程中遍历的边数,减少了冗余的访存开销,提高了算法性能。
随着图数据规模的爆炸式增长,单节点下的图计算已经不适合目前数据的增长,由此出现了用分布式集群进行的分布式图计算。然而在分布式集群上,传统的并行计算应用多采取MPI_Allgatherv这类集合通信。这类算法最简单的实现方法就是通过多对一通信与一对多通信的结合,即通过MPI_GATHER将每个进程的共享数据收集到一个ROOT进程,然后ROOT进程再将每个进程的共享数据和本身的共享数据通过MPI_BCAST广播组内每个进程。此外,分布式集群也可以通过每个进程与其他进程都进行一次数据通信来实现共享数据。
但是,现有的这些实现方法的平均通信距离较大,随着通信节点数、通信数据量的增加,通信开销呈幂次增长。这就导致BFS算法在分布式集群上应用时会产生很高的网络通信开销,其性能受到严重影响,扩展性不佳。因此,有必要对现有技术进行改进,以降低分布式集群上的通信开销,进一步提升图处理的性能,提高图处理的效率。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种应用于分布式计算节点集群的图数据处理方法和介质。
本发明的目的是通过以下技术方案实现的:
根据本发明的第一方面,提供一种应用于分布式计算节点集群的图数据处理方法,包括:S1、获取包含多个顶点的图数据,其中每个顶点具有唯一的原始的顶点ID,按顶点的出度由小到大的顺序对顶点排序并将排序序号作为第一重排序ID替换原始的顶点ID;S2、根据第一重排序ID将图数据的顶点按预设粒度以轮询方式依次分配到分布式计算节点集群中的每一个分布式计算节点;S3、计算节点使用混合BFS算法对其获得的部分图数据进行遍历,每层遍历后各计算节点得到局部的下一层活跃顶点集;S4、每层遍历后相邻计算节点间进行环形通信以传递局部的下一层活跃顶点集,使每个计算节点获得本层的全局下一层活跃顶点集,其中,在部分层遍历后传递局部的下一层活跃顶点集之前,确定本次待传递的局部的下一层活跃顶点集的压缩方式以减少计算节点间的通信量。
在本发明的一些实施例中,所述步骤S1包括:S11、获取图数据中各顶点的出度,其中,顶点的出度是该顶点的出边条数;S12、根据顶点的出度由小到大的顺序依次给顶点分配排序序号,用排序序号作为第一重排序ID替换原始的顶点ID;S13、建立原始的顶点ID与第一重排序ID之间的第一映射关系。
在本发明的一些实施例中,所述步骤S2包括:S21、根据第一重排序ID由小到大的顺序以轮询分配的方式一轮给一个计算节点分配预设粒度的顶点,直至完成所有顶点的分配,其中,预设粒度表示一次分配的顶点个数。
优选的,所述步骤S2还包括:S22、在以轮询方式分配顶点后,依次给各计算节点内的顶点按照其第一重排序ID由小到大的顺序重新分配第二重排序ID,其中,下一计算节点内顶点的第二重排序ID在其相邻的在前计算节点内的第二重排序ID的基础上连续编号;S23、根据第一映射关系建立原始的顶点ID与第二重排序ID之间的第二映射关系。
优选的,所述步骤S2还包括:S24、获取每个计算节点内最小的第二重排序ID作为该计算节点对应的节点偏移;S25、在计算节点内采用至少能部分减少比特位的顶点局部ID进行遍历,其中,顶点局部ID等于该顶点的第二重排序ID减去节点偏移。
在本发明的一些实施例中,混合BFS算法的执行过程包括:随机选取一个顶点作为根顶点对图数据进行宽度优先遍历,初始状态采用自顶向下的方式进行遍历;当前搜索规模增长到满足预定的第一切换条件时,切换为自底向上的方式进行遍历;当前搜索规模衰减到满足预定的第二切换条件时,切换回自顶向下的方式进行遍历。
优选的,所述第一切换条件是mt×α≥mb,所述第二切换条件是m’t×β<mb。其中,mt表示下一层遍历采用自顶向下的方式需要遍历的边数,mb表示下一层遍历采用自底向上的方式预估的需要遍历的边数,m’t表示采用自底向上的方式时预估的下一层遍历采用自顶向下的方式需要遍历的边数;α、β表示由用户设定的切换参数。
优选的,按照以下方式确定在某层遍历后是否压缩本次待传递的局部的下一层活跃顶点集:在初始状态时,不压缩待传递的局部的下一层活跃顶点集;在以自底向上的方式进行遍历时,使用位图压缩保存局部的下一层活跃顶点集,对比用位图压缩和Varint变长编码压缩的所有的局部的下一层活跃顶点集的总数据量,采用总数据量较小的压缩方式对待传递的局部的下一层活跃顶点集进行压缩;在切换回自顶向下的方式进行遍历时,不压缩待传递的局部的下一层活跃顶点集。
优选的,在步骤S4中,在计算节点之间传递局部的下一层活跃顶点时,顶点ID采用局部ID表示,
在一个计算节点获得其他计算节点发送的局部ID时,先根据其他计算节点对应的节点偏移将局部ID还原为全局ID,再根据该计算节点对应的节点偏移将全局ID转换为该计算节点内的局部ID。
根据本发明的第二方面,提供一种分布式计算节点集群,包括:一个或多个处理器;以及存储器,其中存储器用于存储一个或多个可执行指令;所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现如第一方面所述方法的步骤。
与现有技术相比,本发明的优点在于:
本发明通过顶点的出度对顶点ID进行重排序、数据压缩和环形通信,减少了计算节点之间传输数据量和通信量,提高了通信效率。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为根据本发明实施例的应用于分布式计算节点集群的图数据处理方法中为顶点重新分配第一重排序ID的示意图;
图2为根据本发明实施例的应用于分布式计算节点集群的图数据处理方法中为计算节点和线程分配顶点的示意图;
图3为根据本发明实施例的应用于分布式计算节点集群的图数据处理方法中确认某层的待传递的局部的下一层活跃顶点集的压缩方式的流程示意图;
图4为根据本发明实施例的应用于分布式计算节点集群的图数据处理方法中的4个计算节点进行环形通信的示意图;
图5为根据本发明实施例的应用于分布式计算节点集群的图数据处理方法中的4个计算节点将待更新数据分为8个数据块进行环形通信的示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如在背景技术部分提到的,在图处理领域,基于分布式计算节点集群进行图遍历时,随着通信的计算节点数、通信数据量的增加,通信开销呈幂次增长,目前通信能力对图处理效率的影响越发严重。本发明通过顶点的出度对顶点ID进行重排序、数据压缩和环形通信,减少了计算节点之间传输数据量和通信量,提高了通信效率。在对本发明的实施例进行具体介绍之前,先对其中使用到的部分术语作如下解释:
BFS(Breadth First Search)算法,是指宽度优先搜索算法,又称广度优先搜索。BFS算法的基本思想是:首先访问根顶点v(也称根节点、起始顶点),然后由v出发,依次访问根顶点v(此时是当前活跃顶点集)的各个未被访问过的邻接顶点w1,w2,w3…wn(构成下一层活跃顶点集),该层访问完成后用下一层活跃顶点集替换当前活跃顶点集以进行下一层的遍历,即将{w1,w2,w3…wn}作为新的当前活跃顶点集,然后再依次访问w1,w2,w3…wn的所有未被访问过的邻接顶点(构成下一层活跃顶点集),以此类推,直到图中所有的顶点都被访问过为止。BFS算法的核心体现在始终是对图进行逐层遍历。
混合BFS算法,是根据图遍历所处的不同阶段交替使用自顶向下的方式和自底向上的方式进行遍历的BFS算法。自顶向下的方式是从访问过的顶点出发,搜索其所有未被访问过的邻接顶点。自底向上的方式是从未访问顶点u出发,搜索它的邻接顶点列表,寻找一个在上一层搜索中被访问且有出边与它相连的顶点z,然后将未访问顶点u的前驱顶点设置为顶点z。
Graph500,是一个以BFS算法为核心的基准测试程序,Graph500是在2010年的SC2010会议上,美国圣地亚(Sandia)国家实验室与Intel、IBM、AMD、NVIDIA和Oracle合作定义并发布。该基准测试程序通过在大规模Kronecker图上进行广度优先搜索并计算每秒遍历边数(TEPS)来衡量计算机系统的性能,并进行排名。
根据本发明的一个实施例,提供一种图数据处理方法,应用于分布式计算节点集群,包括步骤S1、S2、S3、S4、S5,下面详细说明每个步骤。
步骤S1:获取图数据,图数据包含多个顶点,每个顶点具有唯一的原始的顶点ID,按顶点的出度由小到大的顺序对顶点排序并将排序序号作为第一重排序ID替换原始的顶点ID。
优选的,步骤S1包括:S11、获取图数据中各顶点的出度,其中,顶点的出度是该顶点的出边条数;S12、根据顶点的出度由小到大的顺序依次给顶点分配排序序号,用排序序号替换原始的顶点ID。将排序序号作为第一重排序ID替换原始的顶点ID的示意性步骤为:对顶点进行预处理时,根据顶点的出度进行升序排序,将排序后的顶点的排序序号(第一重排序ID)作为新的顶点ID,并建立原始的顶点ID和第一重排序ID之间的映射。在混合BFS算法执行时,最后几层自底向上的遍历中,由于下一层活跃顶点集骤减,且多为出度小的顶点,采取逆向排序能够保证剩余顶点ID小,提高压缩率。比如,若某个计算节点的顶点ID范围在0~65535,若采取降序排序,剩余n(n∈[0,65535])个顶点的范围多集中在[65535-n,65535];而采取升序排序的话,剩余n个顶点的ID范围多集中在[0,n],比降序排序的顶点ID值小。本发明中采取Varint变长编码对顶点ID进行压缩,值越小的数字使用越少的字节数,因此升序排序能够提高压缩率。
根据本发明的一个示例,参见图1,假设图数据有四个顶点,原始ID分别为0、1、2、3,对应的出度分别为3、2、2、1,图1的左右侧分别表示排序前后的状态。用压缩稀疏矩阵行(Compressed Sparse Row,CSR)矩阵格式存储图数据,如图1所示,Column数组存储每个顶点所有邻居顶点的ID,Row数组存储每个顶点的第一个邻居顶点在column数组中的下标。因为顶点已经按照升序排序,因此当前顶点的第一个邻居顶点为其邻居顶点中id值最小的顶点。以顶点0为例,其邻居顶点为顶点1、顶点2、顶点3,因此column数组中下标为0~2的元素的值分别为1、2、3,row数组中第一个元素保存顶点0的第一个邻居顶点的下标,即:顶点1在column数组中的下标0。若一个顶点的邻居节点有多个,其第一个邻居节点就是其中顶点ID值最小的顶点。按照出度由小到大升序排序后,得到图1右侧所示的结果,生成第一重排序ID并建立原始的顶点ID和第一重排序ID之间的映射,即:将顶点0的ID映射为3,顶点1的ID映射为2,顶点2的ID映射为1,顶点3的ID映射为0。
步骤S2:根据第一重排序ID将图数据的顶点按预设粒度以轮询方式依次分配到分布式计算节点集群中的每一个分布式计算节点。
优选的,步骤S2包括:S21、根据第一重排序ID由小到大的顺序以轮询分配的方式一轮给一个计算节点分配预设粒度的顶点,直至完成所有顶点的分配,其中,预设粒度表示一次分配的顶点个数;S22、在以轮询方式分配顶点后,依次给各计算节点内的顶点按照其第一重排序ID由小到大的顺序重新分配第二重排序ID,其中,下一计算节点内顶点的第二重排序ID在其相邻的在前计算节点内的第二重排序ID的基础上连续编号;S23、根据第一映射关系建立原始的顶点ID与第二重排序ID之间的第二映射关系;S24、获取每个计算节点内最小的第二重排序ID作为该计算节点对应的节点偏移;和/或S25、在计算节点内采用至少能部分减少比特位的顶点局部ID进行遍历,其中,顶点局部ID等于该顶点的第二重排序ID减去节点偏移。在每个计算节点内,顶点ID采用每个计算节点内部的局部ID。每个顶点的全局ID由计算节点内的局部ID和节点偏移组成,节点偏移是每个节点的最小顶点ID,在划分节点时已经确定,局部ID=全局ID-节点偏移,此处的全局ID是指第二重排序ID。参见图2,假设一共有nodes个计算节点,分别为计算节点0、1、2、……、nodes-1,图中总的顶点数为num_vertices,根据节点数nodes,以粒度为1进行轮询分配,每个节点拥有n个顶点在每个节点内部,再根据运行的线程数num_threads,同样以粒度为1进行轮询分配,每个线程拥有t个顶点计算节点0分配得到的顶点ID为:0,nodes,…nodes*(n-1);计算节点1分配得到的顶点ID为:1,nodes+1,…nodes*(n-1)+1;计算节点2分配得到的顶点ID为:2,nodes+2,…nodes*(n-1)+2;计算节点nodes-1分配得到的顶点ID为:nodes-1,2*nodes-1,…。轮询分配后,给各个计算节点内的顶点重新分配第二重排序ID,基于各计算节点的节点偏移将第二重排序ID转换为计算节点内的局部ID。因各计算节点还包括多个线程,所以,基于局部ID将计算节点内的顶点轮询分配给各线程。比如:在各计算节点内部根据局部ID由小到大的顺序以轮询分配的方式一轮给一个线程分配预设粒度的顶点,直至完成所有顶点的分配。以计算节点0为例,假设共有num_threads个线程,其线程0分配到的顶点的局部ID为:0,num_threads,…num_threads*(t-1);线程1分配到的顶点的局部ID为1,num_threads+1,…num_threads*(t-1)+1;线程(num_threads-1)分配到的顶点的局部ID为:num_threads-1,2*num_threads-1,…。
下面给出一个简化的示例,假设图数据包含16个顶点,第一重排序ID分别为0~15,分布式计算节点集群包括4个计算节点,预设粒度设为1。轮询分配后,得到如表1的分配结果:
表1
计算节点0 | 计算节点1 | 计算节点2 | 计算节点3 | |
第一轮 | 0 | 1 | 2 | 3 |
第二轮 | 4 | 5 | 6 | 7 |
第三轮 | 8 | 9 | 10 | 11 |
第四轮 | 12 | 13 | 14 | 15 |
给各计算节点内的顶点按照其第一重排序ID由小到大的顺序重新分配第二重排序ID,得到表2的分配结果,应当注意的是,从表2可以看出,即使分配了第二重排序ID,在单个计算节点内部,依然是出度较小的顶点分配的第二重排序ID的值较小:
表2
根据第一映射关系建立原始的顶点ID与第二重排序ID之间的第二映射关系;以第一重排序ID为9的顶点为例,若第一映射关系指示第一重排序ID为9的顶点对应于原始ID为15的顶点,则根据第一映射关系建立的第二映射关系中,指示将第二重排序ID为6的顶点对应于原始ID为15的顶点;
然后,在个计算节点内部将分配得到的顶点的第二重排序ID转换为各节点内的局部ID,如表3所示:
表3
从表3可以看出,仅计算节点0内分得的顶点的局部ID和全局ID相同,其余计算节点内分得的顶点的局部ID的数值均比全局ID更小,整体来说,局部ID所占比特位会比全局ID更少,在计算节点间通信时,可以采用局部ID代替全局ID,减少通信的数据量。
步骤S3:计算节点使用混合BFS算法对其获得的部分图数据进行遍历,每层遍历后各计算节点得到局部的下一层活跃顶点集。其中,在每一层遍历时,计算节点使用混合BFS算法根据当前活跃顶点集对其获得的部分图数据进行遍历。
优选的,混合BFS算法的执行过程包括:随机选取一个顶点作为根顶点(放入当前活跃顶点集)对图数据进行宽度优先遍历,初始状态采用自顶向下的方式进行遍历;当前搜索规模增长到满足第一切换条件时,切换为自底向上的方式进行遍历;当前搜索规模衰减到满足第二切换条件时,切换回自顶向下的方式进行遍历。其中,所述第一切换条件是mt×α≥mb,所述第二切换条件是m’t×β<mb,其中,mt表示下一层遍历采用自顶向下的方式需要遍历的边数,mb表示下一层遍历采用自底向上的方式预估的需要遍历的边数,m’t表示采用自底向上的方式时预估的下一层遍历采用自顶向下的方式需要遍历的边数;α、β表示由用户设定的切换参数。
步骤S4:参见图4,每层遍历后相邻计算节点间进行环形通信以传递局部的下一层活跃顶点集,使每个计算节点获得本层的全局下一层活跃顶点集,其中,在部分层遍历后传递局部的下一层活跃顶点集之前,确定本次局部的下一层活跃顶点集的压缩方式以减少计算节点间的通信量。
优选的,环形通信是指分布式计算节点集群中所有的计算节点组成环形通信链路,在该环形通信链路中相邻计算节点之间彼此直接进行双向异步点对点通信。一个计算节点和另一个计算节点之间若间隔有其他计算节点,则通过其他计算节点间接收发另一个计算节点传输的数据。
优选的,在步骤S4中,在除所述部分层遍历以外的其余层遍历后不压缩本次待传递的局部的下一层活跃顶点集。其中,按照以下方式确定在某层遍历后是否压缩本次待传递的局部的下一层活跃顶点集:在初始状态时,不压缩待传递的局部的下一层活跃顶点集;在以自底向上的方式进行遍历时,使用位图压缩保存局部的下一层活跃顶点集,对比用位图压缩和Varint变长编码压缩的所有的局部的下一层活跃顶点集的总数据量,采用总数据量较小的压缩方式对待传递的局部的下一层活跃顶点集进行压缩;在切换回自顶向下的方式进行遍历时,不压缩待传递的局部的下一层活跃顶点集。例如,自顶向下遍历时,下一层活跃顶点数量不多,默认采用数组存储和传递局部的下一层活跃顶点集;而自底向上遍历时,下一层活跃顶点数量较多,可以先压缩再传递,以减少通信的数据量;比如:参见图3,在自底向上遍历时,默认采用位图保存局部的下一层活跃顶点集,在计算节点间通信之前,先用Varint变长编码压缩下一层活跃顶点集,比较压缩数据结构与位图的大小,采用其中总数据量较小的数据结构来传递局部的下一层活跃顶点集,即:如果压缩数据结构大于等于位图,则环形通信采用位图,如果压缩数据结构小于位图,则环形通信采用压缩数据结构。使用Varint变长压缩编码对下一层活跃顶点集进行压缩编码的原理为:一个字节占8位,用低7位来表达有效值,高位来表达编码是否完成,高位为0则代表编码完成,高位为1则代表编码未完成。以十进制数300为例,如果用uint32表示,未压缩之前其二进制表示为00000000 00000000 00000001 00101100,需要四个字节。编码时从uint32的最低位到最高位,每次读7位,如果还存在下一步,便在当前读的7位的高位(即第8位)补1,否则高位补0,然后追加到字节流中。即,先读0101100,还存在下一步,高位补1,得到10101100,然后再读0000010,再往后读都是0,则高位补0,得到1010110000000010,编码后的顺序和原值的顺序相反,占用两个字节。
优选的,在步骤S4中,在计算节点之间传递局部的下一层活跃顶点时,顶点ID采用局部ID表示,在一个计算节点获得其他计算节点发送的局部ID时,先根据其他计算节点对应的节点偏移将局部ID还原为全局ID,再根据该计算节点对应的节点偏移将全局ID转换为该计算节点内的局部ID。例如,以表3的示例为基础,假设在一次遍历中,计算节点2遍历得到的其中一个下一层活跃顶点ID的局部ID是1,该顶点ID以局部ID的形式发送给计算节点1后,则计算节点1获取发送该顶点的计算节点(计算节点2)的节点偏移,将该顶点的局部ID通过计算节点2内的局部ID加上计算节点2的节点偏移转换为顶点的0全局ID(即:1+8=9),再通过全局ID减去计算节点1的节点偏移转换为该计算节点1的局部ID(即9-4=5)。由此,本发明在传输数据时以顶点的局部ID代替全局ID从而降低通信的数据量,并在计算节点接收数据后将其他计算节点中顶点的局部ID转换为全局ID再转换为该计算节点自身的局部ID,从而保证结果正确性。
根据本发明的一个示例,根据前面的图数据分配,每次遍历后每个计算节点内部只拥有一部分下一层活跃顶点集的信息,为获取全局下一层活跃顶点集的信息,需要进行计算节点间的环形通信。
参见图5,一个示意性的环形通信包括步骤如下:
将整体的待更新数据(待更新的局部下一层活跃顶点)划分成2*nodes个数据块(nodes为总的计算节点数),采取消息传递通信实现平台MPI(Message PassingInterface)中的非阻塞通信函数MPI_Isend和MPI_Irecv与相邻两个计算节点进行异步点对点通信;当前计算节点向左右邻居计算节点各发送1个数据块,并从左右邻居计算节点接收1个数据块,直至每个计算节点获得全局的下一层活跃顶点。进行新的发送/接收时,保证上一次发送/接收已经结束。在这里,相邻为逻辑上的相邻,即:计算节点0与1和3相邻,计算节点1与0和2相邻,计算节点2与1和3相邻,计算节点3与0和2相邻。以计算节点1为例,每次点对点通信中,计算节点1分别向左右邻居节点:计算节点0、计算节点2发送1个数据块,并接收1个数据块。计算节点1所拥有的数据块为:从左往右的第1、2个数据块,经历三次通信,第1个数据块依次传递到计算节点3、2、1,第2个数据块依次传递计算节点1、2、3。该示例中,环形通信采取MPI_Isend和MPI_Irecv进行非阻塞点对点通信,非阻塞的意思是通信函数调用后不用等待通信完全结束就可以返回。因此在进行下一次环形通信之前,需要等待上一次通信的发送和接收都已经结束。环形通信结束后,每个计算节点中都拥有最新全局下一层活跃顶点集。由于集合通信的平均逻辑通信距离大于1,因此,相比集合通信,本发明的平均逻辑通信距离减少。应当注意的是,划分的数据块的个数是分布式计算节点集群中计算节点数量的正整数倍即可,而并非必须是示例中的2*nodes个数据块。用户可以针对不同规模的图数据设置划分的数据块的个数,以与计算节点集群中计算节点之间的单次通信能力相匹配。
S5、计算节点用全局下一层活跃顶点集替换当前活跃顶点集,重复步骤S3-S4,直至完成对图数据的遍历。
下面通过一个具体的示例来说明本发明的过程。
本示例选择四个计算节点:计算节点0、计算节点1、计算节点2、计算节点3。图数据由Graph500的基准测试程序的图生成器生成,图生成器基于R-MAT算法计算生成Kronecker图作为本示例的图数据。
该示例中,遍历图数据的流程包括:
K1、随机选取一个顶点作为根顶点放入当前活跃顶点集(Current Frontier,也称当前访问顶点队列)进行宽度优先遍历,初始状态采取自顶向下(Top-down)的方式进行遍历,此时用数组存储传递遍历得到的局部的下一层活跃顶点集,每层遍历后用全局下一层活跃顶点集替换当前活跃顶点集;
K2、当前活跃顶点集变得足够大时(根据第一切换条件来判断),切换到自底向上(Bottom-up)的方式进行遍历,在自底向上遍历中,默认用固定大小的位图存储局部的下一层活跃顶点集,计算节点间通信量固定,在传递局部的下一层活跃顶点集进行数据压缩,如果压缩编码结构所需字节比位图少,则启发式切换为压缩编码结构进行通信,每层遍历结束后,计算节点间进行环形通信以更新全局下一层活跃顶点集,通信结束后对压缩编码结构解码;
K3、当前活跃顶点集缩小到一定程度时(根据第二切换条件来判断),切换回自顶向下的方式进行遍历。
K4、当下一层活跃顶点为0时,结束遍历。
基于混合BFS算法进行图遍历时,在最后几层自底向上的遍历中,存在下一层活跃顶点数量骤减且多为出度小的顶点的特点,本发明利用该特点,采取给出度较小的顶点分配较小的顶点ID的方式能够保证剩余顶点ID相对较小,再结合数据压缩方式提高压缩率,减少通信数据量;现有技术通常采用集合通信来共享数据,而本发明在计算节点之间采用环形通信的方式交换局部的下一层活跃顶点集,仅相邻计算节点之间直接通信,相比于集合通信,平均通信距离小。总体来说,本发明降低了混合BFS算法在分布式集群上应用时的通信开销,提升了基于混合BFS算法的分布式图处理过程的性能、效率。需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (11)
1.一种应用于分布式计算节点集群的图数据处理方法,其特征在于,包括:
S1、获取包含多个顶点的图数据,其中每个顶点具有唯一的原始的顶点ID,按顶点的出度由小到大的顺序对顶点排序并将排序序号作为第一重排序ID替换原始的顶点ID;
S2、根据第一重排序ID将图数据的顶点按预设粒度以轮询方式依次分配到分布式计算节点集群中的每一个分布式计算节点;
S3、计算节点使用混合BFS算法对其获得的部分图数据进行遍历,每层遍历后各计算节点得到局部的下一层活跃顶点集;
S4、每层遍历后相邻计算节点间进行环形通信以传递局部的下一层活跃顶点集,使每个计算节点获得本层的全局下一层活跃顶点集,其中,在部分层遍历后传递局部的下一层活跃顶点集之前,确定本次待传递的局部的下一层活跃顶点集的压缩方式以减少计算节点间的通信量。
2.根据权利要求1所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,所述步骤S1包括:
S11、获取图数据中各顶点的出度,其中,顶点的出度是该顶点的出边条数;
S12、根据顶点的出度由小到大的顺序依次给顶点分配排序序号,用排序序号作为第一重排序ID替换原始的顶点ID;
S13、建立原始的顶点ID与第一重排序ID之间的第一映射关系。
3.根据权利要求2所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,所述步骤S2包括:
S21、根据第一重排序ID由小到大的顺序以轮询分配的方式一轮给一个计算节点分配预设粒度的顶点,直至完成所有顶点的分配,其中,预设粒度表示一次分配的顶点个数。
4.根据权利要求3所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,所述步骤S2还包括:
S22、在以轮询方式分配顶点后,依次给各计算节点内的顶点按照其第一重排序ID由小到大的顺序重新分配第二重排序ID,其中,下一计算节点内顶点的第二重排序ID在其相邻的在前计算节点内的第二重排序ID的基础上连续编号;
S23、根据第一映射关系建立原始的顶点ID与第二重排序ID之间的第二映射关系。
5.根据权利要求4所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,所述步骤S2还包括:
S24、获取每个计算节点内最小的第二重排序ID作为该计算节点对应的节点偏移;
S25、在计算节点内采用至少能部分减少比特位的顶点局部ID进行遍历,其中,顶点局部ID等于该顶点的第二重排序ID减去节点偏移。
6.根据权利要求1至5任一项所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,在所述步骤S3中,混合BFS算法的执行过程包括:
随机选取一个顶点作为根顶点对图数据进行宽度优先遍历,初始状态采用自顶向下的方式进行遍历;
当前搜索规模增长到满足预定的第一切换条件时,切换为自底向上的方式进行遍历;
当前搜索规模衰减到满足预定的第二切换条件时,切换回自顶向下的方式进行遍历。
7.根据权利要求6所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,
所述第一切换条件是mt×α≥mb,
所述第二切换条件是m’t×β<mb,
其中,mt表示下一层遍历采用自顶向下的方式需要遍历的边数,mb表示下一层遍历采用自底向上的方式预估的需要遍历的边数,m’t表示采用自底向上的方式时预估的下一层遍历采用自顶向下的方式需要遍历的边数;α、β表示由用户设定的切换参数。
8.根据权利要求7所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,按照以下方式确定在某层遍历后是否压缩本次待传递的局部的下一层活跃顶点集:
在初始状态时,不压缩待传递的局部的下一层活跃顶点集;
在以自底向上的方式进行遍历时,使用位图压缩保存局部的下一层活跃顶点集,对比用位图压缩和Varint变长编码压缩的所有的局部的下一层活跃顶点集的总数据量,采用总数据量较小的压缩方式对待传递的局部的下一层活跃顶点集进行压缩;
在切换回自顶向下的方式进行遍历时,不压缩待传递的局部的下一层活跃顶点集。
9.根据权利要求5所述的应用于分布式计算节点集群的图数据处理方法,其特征在于,
在步骤S4中,在计算节点之间传递局部的下一层活跃顶点时,顶点ID采用局部ID表示,
在一个计算节点获得其他计算节点发送的局部ID时,先根据其他计算节点对应的节点偏移将局部ID还原为全局ID,再根据该计算节点对应的节点偏移将全局ID转换为该计算节点内的局部ID。
10.一种计算机可读存储介质,其特征在于,其上包含有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至9中任一项所述方法的步骤。
11.一种分布式计算节点集群,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储一个或多个可执行指令;
所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现权利要求1至9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010460064.5A CN111737540B (zh) | 2020-05-27 | 2020-05-27 | 一种应用于分布式计算节点集群的图数据处理方法和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010460064.5A CN111737540B (zh) | 2020-05-27 | 2020-05-27 | 一种应用于分布式计算节点集群的图数据处理方法和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111737540A true CN111737540A (zh) | 2020-10-02 |
CN111737540B CN111737540B (zh) | 2022-11-29 |
Family
ID=72647758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010460064.5A Active CN111737540B (zh) | 2020-05-27 | 2020-05-27 | 一种应用于分布式计算节点集群的图数据处理方法和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111737540B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112261023A (zh) * | 2020-10-15 | 2021-01-22 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的数据传输方法和装置 |
CN113407509A (zh) * | 2021-07-17 | 2021-09-17 | 广州汇思信息科技股份有限公司 | 一种数据的压缩方法、装置、计算机设备和存储介质 |
CN113630476A (zh) * | 2021-10-11 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | 应用于计算机集群的通信方法及通信装置 |
CN114528439A (zh) * | 2020-11-23 | 2022-05-24 | 电科云(北京)科技有限公司 | 基于分布式系统的极大团枚举方法和装置 |
CN114817315A (zh) * | 2022-06-23 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 数据处理方法以及系统 |
CN115482147A (zh) * | 2022-09-14 | 2022-12-16 | 中国人民大学 | 基于压缩数据直接计算的高效并行图处理方法和系统 |
WO2023066198A1 (zh) * | 2021-10-20 | 2023-04-27 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理 |
WO2023184835A1 (zh) * | 2022-03-31 | 2023-10-05 | 深圳清华大学研究院 | 三类顶点度数感知的1.5维度图划分方法及应用 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701469A (zh) * | 2013-12-26 | 2014-04-02 | 华中科技大学 | 一种大规模图数据的压缩存储方法 |
JP2016081494A (ja) * | 2014-10-20 | 2016-05-16 | コリア インスティテュート オブ サイエンス アンド テクノロジー インフォメイション | 分散コンピューティング環境におけるグラフデータの振り分け方法及び装置 |
CN105893486A (zh) * | 2016-03-29 | 2016-08-24 | 华中科技大学 | 一种基于团的大规模图最短距离索引方法 |
CN106033442A (zh) * | 2015-03-16 | 2016-10-19 | 北京大学 | 一种基于共享内存体系结构的并行广度优先搜索方法 |
CN107122248A (zh) * | 2017-05-02 | 2017-09-01 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
CN107564075A (zh) * | 2017-09-29 | 2018-01-09 | 桂林电子科技大学 | 一种稠密图邻接表压缩方法 |
CN109949202A (zh) * | 2019-02-02 | 2019-06-28 | 西安邮电大学 | 一种并行的图计算加速器结构 |
CN109992413A (zh) * | 2019-03-01 | 2019-07-09 | 中国科学院计算技术研究所 | 一种面向宽度优先搜索算法的加速装置、方法及存储介质 |
CN110737804A (zh) * | 2019-09-20 | 2020-01-31 | 华中科技大学 | 一种基于活跃度布局的图处理访存优化方法及系统 |
-
2020
- 2020-05-27 CN CN202010460064.5A patent/CN111737540B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103701469A (zh) * | 2013-12-26 | 2014-04-02 | 华中科技大学 | 一种大规模图数据的压缩存储方法 |
JP2016081494A (ja) * | 2014-10-20 | 2016-05-16 | コリア インスティテュート オブ サイエンス アンド テクノロジー インフォメイション | 分散コンピューティング環境におけるグラフデータの振り分け方法及び装置 |
CN106033442A (zh) * | 2015-03-16 | 2016-10-19 | 北京大学 | 一种基于共享内存体系结构的并行广度优先搜索方法 |
CN105893486A (zh) * | 2016-03-29 | 2016-08-24 | 华中科技大学 | 一种基于团的大规模图最短距离索引方法 |
CN107122248A (zh) * | 2017-05-02 | 2017-09-01 | 华中科技大学 | 一种存储优化的分布式图处理方法 |
CN107564075A (zh) * | 2017-09-29 | 2018-01-09 | 桂林电子科技大学 | 一种稠密图邻接表压缩方法 |
CN109949202A (zh) * | 2019-02-02 | 2019-06-28 | 西安邮电大学 | 一种并行的图计算加速器结构 |
CN109992413A (zh) * | 2019-03-01 | 2019-07-09 | 中国科学院计算技术研究所 | 一种面向宽度优先搜索算法的加速装置、方法及存储介质 |
CN110737804A (zh) * | 2019-09-20 | 2020-01-31 | 华中科技大学 | 一种基于活跃度布局的图处理访存优化方法及系统 |
Non-Patent Citations (4)
Title |
---|
丁勇等: "一种基于Hadoop的关联规则挖掘算法", 《计算机科学》 * |
崔妍等: "关联规则挖掘综述", 《计算机应用研究》 * |
王思雪等: "基于图遍历的计算DEM数据洪水淹没范围的算法", 《遥感信息》 * |
王童童等: "分布式图处理系统技术综述", 《软件学报》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112261023A (zh) * | 2020-10-15 | 2021-01-22 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络的数据传输方法和装置 |
CN114528439A (zh) * | 2020-11-23 | 2022-05-24 | 电科云(北京)科技有限公司 | 基于分布式系统的极大团枚举方法和装置 |
CN113407509A (zh) * | 2021-07-17 | 2021-09-17 | 广州汇思信息科技股份有限公司 | 一种数据的压缩方法、装置、计算机设备和存储介质 |
CN113630476A (zh) * | 2021-10-11 | 2021-11-09 | 支付宝(杭州)信息技术有限公司 | 应用于计算机集群的通信方法及通信装置 |
CN114189518A (zh) * | 2021-10-11 | 2022-03-15 | 支付宝(杭州)信息技术有限公司 | 应用于计算机集群的通信方法及通信装置 |
WO2023061329A1 (zh) * | 2021-10-11 | 2023-04-20 | 支付宝(杭州)信息技术有限公司 | 应用于计算机集群的通信方法及通信装置 |
WO2023066198A1 (zh) * | 2021-10-20 | 2023-04-27 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理 |
WO2023184835A1 (zh) * | 2022-03-31 | 2023-10-05 | 深圳清华大学研究院 | 三类顶点度数感知的1.5维度图划分方法及应用 |
CN114817315A (zh) * | 2022-06-23 | 2022-07-29 | 阿里巴巴(中国)有限公司 | 数据处理方法以及系统 |
CN114817315B (zh) * | 2022-06-23 | 2022-11-22 | 阿里巴巴(中国)有限公司 | 数据处理方法以及系统 |
CN115482147A (zh) * | 2022-09-14 | 2022-12-16 | 中国人民大学 | 基于压缩数据直接计算的高效并行图处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111737540B (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737540B (zh) | 一种应用于分布式计算节点集群的图数据处理方法和介质 | |
CN112352234B (zh) | 用于处理并发属性图查询的系统 | |
Li et al. | Coded mapreduce | |
US20130263151A1 (en) | Consistent Hashing Table for Workload Distribution | |
Yang et al. | Timely-throughput optimal coded computing over cloud networks | |
WO2021196392A1 (zh) | 一种点云几何编码方法、解码方法、编码设备及解码设备 | |
WO2014210499A1 (en) | Computing connected components in large graphs | |
CN107820321B (zh) | 一种基于蜂窝网络的窄带物联网中大规模用户智能接入方法 | |
CN109191287B (zh) | 一种区块链智能合约的分片方法、装置及电子设备 | |
CN109710406B (zh) | 数据分配及其模型训练方法、装置、及计算集群 | |
CN107911300B (zh) | 基于鲸鱼算法的组播路由优化方法及其在Spark平台上的应用 | |
Wesolowski et al. | Tram: Optimizing fine-grained communication with topological routing and aggregation of messages | |
CN112306651A (zh) | 一种资源分配方法和资源借调方法 | |
CN112379985B (zh) | 一种云边缘计算环境下的计算任务分配方法及装置 | |
CN106685429B (zh) | 整数压缩方法及装置 | |
CN112235344A (zh) | 一种面向分布式机器学习的稀疏通信模型的实现方法 | |
CN108429679B (zh) | 扩展型互连网络的拓扑结构及其路由方法 | |
Zhao et al. | Optimize the placement of edge server between workload balancing and system delay in smart city | |
CN115357571A (zh) | 一种数据去重方法、装置、设备及介质 | |
CN113014663B (zh) | 支持跨节点计算任务抗毁接替的任务与资源匹配方法 | |
CN108494845B (zh) | 一种基于6D-Torus网络的作业调度方法和装置 | |
CN110825706B (zh) | 一种数据压缩的方法和相关设备 | |
CN114567634A (zh) | 面向后e级图计算的方法、系统、存储介质及电子设备 | |
CN112004265B (zh) | 一种基于srm算法的社交网络资源分配方法 | |
CN115599541A (zh) | 一种排序装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |