掌桥专利:专业的专利平台
掌桥专利
首页

一种单机核外属性图计算方法

文献发布时间:2023-06-19 11:42:32


一种单机核外属性图计算方法

技术领域

本发明属于计算机科学技术领域,尤其涉及一种单机核外属性图计算方法。

背景技术

随着现实生活中图数据(如:社交网络、用户-物品网络、路网、交易网络等等)的快速增长,用户需要从这些图数据中挖掘具有潜在价值的信息的高效计算系统。由于现实场景下的图往往包含上十亿级的顶点和边,近年来,大规模图计算已成为研究领域中的热点问题。

大规模图计算系统主要可分为两类,即分布式系统和单机系统。分布式系统通常是处理大规模数据的自然的选择,目前已有许多分布式图计算系统的相关研究。由于分布式系统需要将图分布在集群的若干台机器上,故分布式系统需要把大规模图切分为若干子图,即“分图”(partitioning),并将这些子图分别分布到不同机器上。图的分散分布使得分布式系统执行图算法任务时不可避免地在机器间进行大量消息交换与合并。雪上加霜的是,现实世界中许多图的偏斜度分布(skewed degree distribution)、高密度(highdensity)和大直径(large diameter)等特征导致分布式系统产生诸如负载不平衡(loadimbalance),同步开销(synchronization overhead)和容错开销(fault toleranceoverhead)等问题。单机系统则能够有效避免机器间通信带来的问题。单机图计算系统又可细分为单机核内(in-memory)图计算系统和单机核外(out-of-core)图计算系统。单机核内图计算系统将图数据完全存放在内存中,其能够处理的图数据规模受内存大小的限制,而单机核外图计算系统则同时利用了机器的内存与外存存储和处理图数据,因此具有更佳的可扩展性。同时,相较于分布式系统,单机核外图计算系统仅允许内存和本地外存之间进行数据交换,从而大大降低了通信开销。

由于单机核外图计算系统涉及内外存之间的数据交换,引入分图策略能够更加有效组织数据,提升系统性能,因此现有单机核外图计算系统研究将分图策略作为主要问题之一考虑。“对称网格”分图策略是现有主流技术方案之一,其将顶点ID划分为若干个区间,根据边的源顶点ID所在区间确定该边所在网格的“行”,根据边的目的顶点ID所在区间确定该边所在网格的“列”,在计算过程中通过以“行”或“列”为导向的网格加载方式控制需要加载的顶点数据,被加载的网格会同时加载其所在“行”对应的顶点区间的所有顶点的相关变量和所在“列”对应的顶点区间的所有顶点的相关变量,其中“行”顶点数据涉及外存的“读”,而“列”顶点数据涉及外存的“写”。但是,计算机外存读写速度不一致的硬件特性使得“对称网格”分区策略中的“行”和“列”数据加载速度不一致,“行”读数据远快于“列”写数据,导致计算资源和时间的浪费。因此,如何设计分图策略使得单机核外图计算系统的性能尽可能提升是单机核外图计算系统研究与应用中的关键问题之一。

此外,在现有的单机核外图计算系统的研究中,尽管许多现实场景中的图都具有大量的属性数据,但这些单机核外图计算系统都未考虑具有属性的图的图计算问题。例如,针对网络图(web graph),用户需要计算生成时间在指定范围内的网页排名(PageRank),以便用户了解这段时间内的热门网页。但现有的仅考虑拓扑图计算的单机核外系统无法执行此类任务。一种简单的解决方案是利用数据库查询引擎来选择满足时间条件的边和顶点,即从原始图数据中提取符合条件的子图,然后再导入到单机核外图计算系统处理该子图。但是,该解决方案的一个主要问题是,提取的子图由于拓扑结构的变化需要在外存上重新分图,这意味着单机核外图计算系统需要针对每个特定条件限制的属性图计算任务进行分图处理,这对时间和计算资源来说都是极大的浪费。因此,如何高效地计算属性图是单机核外属性图计算系统研究与应用中的关键问题。

发明内容

本发明针对现有技术方案的不足,提供一种单机核外属性图计算系统,可分为预处理阶段和计算阶段,其在预处理阶段使用“双层不对称网格”分图策略分图,并基于列式存储方式存储分图后的属性图数据,同时分图后的网格使用双向重组策略合并,在计算阶段则基于标记-流式处理(labeling-and-streaming)两阶段计算模型计算用户定义的属性图计算任务。

本发明的技术方案为一种单机核外属性图计算方法,具体步骤如下:

步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;

步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;

步骤3:将步骤2中通过外层不对称网格分图策略算法得到的P

步骤4:对每个经过步骤3处理的Block(x,y)所得到的细粒度边集合Block(x

步骤5:对所有一维数组Block’(x,y)(x∈[1,P

步骤6:通过步骤5得到的属性图二维数组Grid构建出1个拓扑数组Column(E)和q个边的属性的数组Column(A

步骤7:对顶点的属性数据A

步骤8:根据用户给定的属性条件限制,依次顺序遍历需要的在步骤7得到的顶点属性数组,在内存中得到一个顶点标记数组,再依次顺序遍历需要的在步骤6得到的边属性数组并结合顶点标记数组,最终得到在内存中的顶点标记数组和边标记数组;

步骤9:根据用户给定的计算任务,顺序读步骤6得到的拓扑数组,对读入的每条边通过步骤8得到的顶点标记数组和边标记数组判断该边是否需要进行计算,若需要则按用户定义的计算任务处理;遍历完拓扑数组中的每条边后,根据用户定义的计算任务判断是否满足计算任务结束条件,是则结束,用户发起新的计算任务时直接进入步骤8,否则重复步骤9。

作为优选,步骤1中所述的属性图,可概括为顶点和边都具有属性的拓扑图,具体定义为:

G=(V,E,A

V={v

其中,V表示属性图中顶点的集合,v

E={e

A

A

|V|为集合V的势,表示属性图顶点的数量;

|E|为集合E的势,表示属性图连边的数量;

作为优选,步骤2所述顶点簇集合包括:源顶点簇集合、目的顶点簇集合;

所述源顶点簇的集合定义为V

所述目的顶点簇的集合定义为V

P

步骤2所述源顶点簇定义为:

V

步骤2所述目的顶点簇定义为:

V

对于属性图中第i个顶点即v

v

v

根据外层不对称网格分图策略分图后,步骤1所定义的图的边集E将被划分出P

Block(x,y)={e

|Block(x,y)|为集合Block(x,y)的势,表示顶点簇V

作为优选,步骤3所述内层不对称网格分图策略算法的应用对象是步骤2得到的每对顶点簇对应的边集合中超过一定大小记为Csize的边集合,即满足|Block(x,y)|>Csize的Block(x,y);

步骤3所述的对边集合再次细化分簇具体为:

对每个|Block(x,y)|>Csize的边集合Block(x,y),通过内层不对称网格分图策略算法将得到P

步骤3所述细粒度源顶点簇定义为:

步骤3所述细粒度目的顶点簇定义为:

步骤3所述细粒度边集合定义为:

Block(x

P

进一步地,若边集合Block(x,y)满足|Block(x,y)|>Csize且Block(x,z)满足|Block(x,z)|>Csize,同时|Block(x,y)|/Csize≠|Block(x,z)|/Csize,那么对Block(x,y)和Block(x,z)分别细化分簇得到的细粒度边子集个数不同,即不同Block的P

作为优选,步骤4所述的对Block(x,y)的细粒度边集合Block(x

作为优选,步骤5所述的对一维数组Block’(x,y)(x∈[1,P

””’

Block(1,1),Block(2,1),…Block(P

对于没有执行步骤3和步骤4的Block(x,y),(|Block(x,y)|≤Csize),Block(x,y)=Block’(x,y);

由于Grid数组的每一个元素Block’(x,y)都是一个一维数组,故这P

作为优选,步骤6具体为:

其中,Column(E)=E,Column(E)中边的顺序与步骤5得到的属性图二维数组中的边的顺序一致;

Column(A

Column(A

作为优选,步骤7具体为:

Column(A

Column(A

作为优选,步骤8所述用户给定的属性条件限制定义为:若干个顶点属性即0到m个和若干个边属性即0到q个的逻辑运算组合式,逻辑运算组合式的结果仅通过0-1真假值即可表示;

用户给定的属性条件限制为UserQuery;

顺序遍历的含义为对任意一个顶点属性数组或边属性数组,从数组头部顺序读取即相对于随机读至数组尾部即中途不读取其他数组,并且对读入的数组元素按用户给定的属性条件限制做逻辑判断,符合或不符合属性限制条件的点或边将在顶点标记数组或边标记数组中记录;

顶点标记数组定义为一个大小为|V|的布尔值数组VertexArray,VertexArray[i]表示顶点v

边标记数组定义为一个大小为|E|的布尔值数组EdgeArray,EdgeArray[k]表示边位移(offset)为k的边e

当UserQuery涉及的顶点属性数目和边属性数目均大于0时,程序需要先顺序遍历若干个涉及的顶点属性数组,再顺序遍历若干个涉及的边属性数组,EdgeArray[k]=1的条件是e

当UserQuery涉及的顶点属性数目为0,边属性数目大于0时,程序需要只顺序遍历若干个涉及的边属性数组,EdgeArray[k]=1的条件是e

当UserQuery涉及的顶点属性数目大于0,边属性数目为0时,程序需要只顺序遍历若干个涉及的顶点属性数组,EdgeArray[k]=1的条件是e

当UserQuery涉及的顶点属性数目和边属性数目均为0时,程序默认任意EdgeArray[k]=1,k∈[1,|E|];

对同一属性图,步骤1-7只需执行一次。预处理阶段即步骤1-7完成后,系统持续处于计算阶段即步骤8-9,能够持续处理用户给出的相同和不同的图计算任务,系统对每一个有属性条件限制的图计算任务需要完整执行一次计算阶段。

本发明利用计算机“外存-内存-缓存”三层数据存储系统读写速度不一致的特性,通过“双层不对称网格”分图策略和分图后网格块重组实现了“外存-内存”外网格列优先遍历,“内存-缓存”内网格行优先遍历的调度策略,同时借助列式存储文件格式使属性图计算过程中属性的读取效率最大化,并且通过标记-流式处理两阶段计算模型使得单机核外图计算系统能够执行有属性条件限制的图计算任务,并且保证了属性图计算任务的执行效率。

附图说明

图1:是本发明所述单机核外属性图计算系统总流程。

图2:是本发明实施例的属性图G经过步骤2外层不对称网格分图策略分图后得到的源顶点簇、目的顶点簇和对应边集合的结果示意图。

图3:是本发明实施例以Block(150,6)为例说明经过步骤3内层不对称网格分图算法细分后得到的细粒度源顶点簇、目的顶点簇和对应边集合的结果示意图。

图4:是本发明实施例以Block(150,6)为例说明步骤4按源顶点簇优先的顺序重组细粒度边集合Block(150

图5:是本发明实施例说明步骤5的按目的顶点簇优先的顺序重组Block’(x,y)得到Grid的结果示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例对本发明技术方案进行具体描述。

本发明主要基于外存的顺序访问速度远高于随机访问速度的特性,考虑单机图计算问题中的属性图计算问题,提出的一种单机核外属性图计算系统。本方法充分考虑了不同存储介质的不同访问方式访问速度不同的特性和属性图计算任务中属性的作用,通过“双层不对称网格”分图策略组织图数据,列式存储方式存储拓扑图的属性数据,以及使用标记-流式处理两阶段属性图计算模型,尽可能减少随机访问并充分利用了不同存储介质的读写特性,以此提升计算效率。通过本发明,能使单机核外图计算系统能够处理具有属性条件限制的复杂图计算任务,并保证了计算效率。

下面结合图1至图5介绍本发明的具体实施方式:

本发明所述的单机核外属性图计算系统的总流程如图1所示。

步骤1:构建属性图,所述属性图由多个顶点、多条边、顶点对应的多个属性,以及边对应的多个属性构成;

实施例以含有1560000个顶点、23450000条边、50个顶点的属性和80个边的属性的属性图G为例对本发明的流程进行一个具体的阐述,该属性图具体定义如下:

G=(V,E,A

V={v

E={e

A

A

其中,V表示属性图G中1560000个顶点的集合,E表示属性图G中23450000条连边的集合,A

v

e

A

A

在本实施例中,|V|=1560000,|V|表示属性图顶点的数量;|E|=23450000,|E|表示属性图连边的数量;

步骤2:将属性图的多个顶点通过外层不对称网格分图策略算法进行分簇,得到顶点簇以及每对顶点簇对应的边集合;

步骤2所述顶点簇集合包括:源顶点簇集合、目的顶点簇集合;

所述源顶点簇的集合定义为V

所述目的顶点簇的集合定义为V

本实施例中步骤2所述源顶点簇定义为:

V

本实施例中步骤2所述目的顶点簇定义为:

V

以x=150举例,则V

以y=6举例,则V

以属性图G中第312000个顶点,即v

v

v

在本实施例中,经过步骤2所述的外层不对称网格分图策略分图后,步骤1所定义的图的边集E将被划分出156×30个边的子集,如图2所示,每个边的子集的符号定义为Block(x,y),Block(x,y)表示源顶点簇V

Block(x,y)={e

以x=150,y=6举例,则Block(150,6)={e

|Block(x,y)|为集合Block(x,y)的势,表示顶点簇V

步骤3:将步骤2中通过外层不对称网格分图策略算法得到的156×30个边集合Block再次细化分簇,对每个Block通过内层不对称网格分图策略算法得到粒度更小的顶点簇以及每对细粒度顶点簇对应的细粒度边集合;

内层不对称网格分图策略算法的应用对象是步骤2得到的每对顶点簇对应的边集合中超过一定大小(记为Csize)的边集合,即满足|Block(x,y)|>Csize的Block(x,y);

在本实施例中,令Csize=10000,以Block(150,6)、Block(10,3)和Block(31,6)举例,设|Block(150,6)|=51350,|Block(10,3)|=25450,|Block(31,6)|=3500,那么Block(150,6)和Block(10,3)需要执行步骤3和步骤4,Block(31,6)直接进入步骤5

本实施例中,以Block(150,6)为例说明步骤3所述的对边集合再次细化分簇,具体为:

因为|Block(150,6)|/Csize=6,令Block(150,6)对应的P

由于Block(150,6)对应的P

如图3所示,V

V

Block(150

以a=2,b=3为例,Block(150

另外,|Block(10,3)|/Csize=3,则令Block(10,3)对应的P

步骤4:对每个经过步骤3处理的Block(x,y)所得到的细粒度边集合Block(x

继续以Block(150,6)为例进行解释,Block(150,6)通过步骤3得到Block(150

步骤5:对所有一维数组Block’(x,y)(x∈[1,156],y∈[1,30])按目的顶点簇优先的顺序重组,得到一个一维数组Block’(x,y)间有序的属性图二维数组Grid;

对于没有执行步骤3和步骤4的Block(x,y),(|Block(x,y)|≤Csize),Block(x,y)=Block’(x,y),如步骤3提到的Block(31,6)有Block(31,6)=Block’(31,6);

经过前述的步骤1-4,得到156×30个Block’(x,y)(x∈[1,156],y∈[1,30]),步骤5对这156×30个一维数组Block’(x,y)按目的顶点簇优先的顺序重组得到Grid=[Block’(1,1),Block’(2,1),…Block’(156,1),Block’(1,2),Block’(2,2),…Block’(156,30)],如图5所示;

步骤6:通过步骤5得到的属性图二维数组Grid构建出1个拓扑数组Column(E)和q个边的属性的数组Column(A

其中,Column(E)=E,Column(E)中边的顺序与步骤5得到的属性图数据集合中的边的顺序一致;Column(A

以b=15为例,Column(A

步骤7:对顶点的属性数据A

Column(A

在本实施例中,给定一个有属性条件限制的图计算任务,具体为:计算第13个顶点到第1549876个顶点的最短路径,顶点的属性条件限制为:第1个属性的属性值>100且第25个属性的属性值≠0的顶点,边的属性限制条件为:第4个属性的属性值≥0或第67个属性的属性值=1的顶点。将该计算任务通过符号表示,为:计算v

步骤8:符合属性条件限制的拓扑子图标记——根据用户给定的属性条件限制,依次顺序遍历需要的在步骤7得到的顶点属性数组,在内存中得到一个顶点标记数组,再依次顺序遍历需要的在步骤6得到的边属性数组并结合顶点标记数组,最终得到在内存中的顶点标记数组和边标记数组;

本实施例中具体的实施过程说明如下:

1.首先初始化顶点标记数组VertexArray[1560000]和边标记数组EdgeArray[23450000],这两个数组大小分别为1560000比特和23450000比特;

2.因为给定的实施例的计算任务中有顶点的属性条件限制,所以标记过程首先进行顶点标记。先遍历步骤7得到的Column(A

3.接下来对边进行标记。先遍历步骤6得到的Column(A

步骤9:根据用户给定的计算任务,顺序读步骤6得到的拓扑数组,对读入的每条边通过步骤8得到的顶点标记数组和边标记数组判断该边是否需要进行计算,若需要则按用户定义的计算任务处理;遍历完拓扑数组中的每条边后,根据用户定义的计算任务判断是否满足计算任务结束条件,是则结束,否则重复步骤9。

实施例具体的实施过程说明如下:

1.设置一个活跃顶点数组ActiveArray[1560000],ActiveArray[13]=1;

2.第一次迭代:遍历步骤6得到的Column(E),目前只有ActiveArray[13]状态为活跃,所以当遍历到e

然后查询步骤8得到的顶点标记数组VertexArray,如果VertexArray[j]=0则遍历Column(E)中的下一条边e

遍历完Column(E)时令ActiveArray[13]=0;

假设Column(E)中有e

3.第二次迭代:遍历步骤6得到的Column(E),目前有ActiveArray[16]和ActiveArray[14532]状态为活跃,所以当遍历到e

然后查询步骤8得到的顶点标记数组VertexArray,如果VertexArray[j]=0则遍历Column(E)中的下一条边e

遍历完Column(E)时令ActiveArray[16]=0,ActiveArray[14532]=0;

假设Column(E)中有e

具体实施时,本领域技术人员可采用计算机软件方式支持实现流程。

本发明提供了本领域技术人员能够实现的技术方案。以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。

相关技术
  • 一种单机核外属性图计算方法
  • 云计算环境中的基于结点属性函数的任务核值计算方法
技术分类

06120113022963