图的处理方法、装置以及栅格化表示及存储方法

文档序号:9235928阅读:503来源:国知局
图的处理方法、装置以及栅格化表示及存储方法
【技术领域】
[0001]本发明总体地涉及图计算领域,更具体地涉及图的处理方法、装置以及栅格化表示及存储方法。
【背景技术】
[0002]近年来,不管在学术界还是工业界,对于高效处理大规模图的需求日益增长。图是一种由顶点的集合和顶点之间的关联关系即边的集合共同形成的数据结构。图也可以视为一种网络。现实生活中的许多问题,例如,社交网络中用户之间的关系、万维网中网页之间的关系、用户-项目矩阵(user-1tem matrix)等,都可以转化为图计算问题。
[0003]为处理大规模图数据,近些年提出了许多分布式图处理系统,例如Pregel、GraphLab、PowerGraph、GraphX等。借助强大的集群计算资源,分布式图处理系统能够处理大规模图数据。但是,在分布式环境下,负载不平衡、服务器间同步、容错处理开销等仍是严峻的挑战。而且,分布式计算算法复杂度很高,调试、优化都很困难,对程序开发人员也是较大的挑战。
[0004]作为替代,已经提出了一些通过高效利用磁盘在单个计算机上处理大规模图的图处理系统,例如GraphChi,X-Stream等。
[0005]GraphChi需要进行预处理,先把顶点分成若干个区间(interval),然后把以每个区间内的顶点为目标顶点的边放在一个切片(shard)中,各个切片必须根据起始顶点进行排序,这导致了不可忽视的预处理开销。经过这样的预处理之后,GraphChi就可以用并行滑动窗口(parallel sliding window)技术进行计算。GraphChi使用顶点中心(Vertex-centric)处理模型,通过读取边值从邻居收集数据,计算并对顶点应用新值,以及通过写边值将该新数据分散到邻居。另外,切片为了在收集阶段直接对顶点进行更新,还要求根据目标顶点对边进行预排序。
[0006]X-Stream引入了边中心(edge-centric)发散-收集处理模型。在发散阶段,X-Stream流式遍历边,并产生更新来传播顶点状态。在收集阶段,X-Stream流式遍历更新来产生顶点的新状态。对顶点的访问是随机的并且是在快速的小容量存储设备上进行的;对边的访问和更新是在慢的大容量存储设备上进行的,但是是顺序访问,从而能够获得大的吞吐量。X-Stream没有独立的预处理阶段,但是需要在计算之前和每次产生更新之后对边和更新进行重新排列(shuffle)。

【发明内容】

[0007]鉴于上述情况,提出了本发明。
[0008]根据本发明的一个方面,提供了一种由计算机执行的图的处理方法,包括:原始图结构获取步骤,获取原始图的图结构信息;预处理步骤,用于将图处理为边分组的栅格结构,包括:根据图结构信息,将图的所有顶点分为P个顶点分组V,各个顶点分组V之间不重叠,保存关于顶点分组的信息,将各个顶点分组V的数据存储在第一存储设备上;根据图结构信息,按照如下方式得到p*p个边分组E,其中P为大于等于2的整数:对于P个顶点分组中的第i个顶点分组,以及P个分组中的第j个顶点分组,其中i = I到P,j = I到P,以第i个顶点分组中的各个顶点为边起点候选,以第j个顶点分组中的各个顶点为边终点候选,依据图结构信息,得到各个边,构成以i和j来标识的边分组Eu,将该第i个顶点分组称为起始顶点分组,将第j个顶点分组称为终点顶点分组,将P*P个边分组E的数据存储在第二存储设备上;流式处理步骤,按照预定的处理函数,一个边分组一个边分组进行处理,其中对于每个边分组,流式处理其中的边,即按照该预定的处理函数逐个对边分组中的边进行处理,其中在处理具体边分组Eiij时,从第二存储设备将该边分组的数据顺序读入第三存储设备中,以及将起始顶点分组Vi的数据和终点顶点分组乂」的数据从第一存储设备读入第四存储设备中,依据起始顶点分组Vi的数据、终点顶点分组数据和边分组Eij的数据,按照预定的处理函数,对于该边分组Ei,」中的边进行处理。
[0009]2、如方面I所述的处理方法,其中,第一存储设备和第二存储设备的访问速度低于第三存储设备和第四存储设备的访问速度。
[0010]3、如方面2所述的数据处理方法,第一和第二存储设备为硬盘或固态盘,第三和第四存储设备为内存。
[0011]4、如方面2所述的数据处理方法,第一和第二存储设备为内存,第三和第四存储设备为高速缓存cache。
[0012]5、如方面I到4任一项所述的处理方法,所述流式处理边包括实时对边终点进行本地更新。
[0013]6、如方面I到4任一项所述的处理方法,包括按列顺序来处理各个边分组。
[0014]7、如方面I到4任一项所述的处理方法,还包括:
[0015]在边分组Eiij处理完成后,将处理后的起始顶点分组V 数据和/或终点顶点分组'的数据统一更新到第一存储设备。
[0016]8、如方面I到4任一项的处理方法,其中顶点数据存储在文件系统上,通过操作系统的内存映射机制来访问。
[0017]9、如方面I到4任一项所述的处理方法,还包括:
[0018]在对边分组Eu进行处理之前,判断该边分组E u是否处于活动状态;以及
[0019]当判断结果为该边分组Eu并未处于活动状态时,不对该边分组E u进行处理。
[0020]10、如方面I到4任一项所述的处理方法,还包括:
[0021]在对边分组Eiij中的顶点和/或边进行处理之前,判断该顶点和/或边是否应该被处理;以及
[0022]当判断结果为该顶点和/或边不应被处理时,不对该顶点和/或边进行处理。
[0023]11、如方面I到4任一项所述的处理方法,其中,采用多个线程并行对各个边分组进行处理。
[0024]12、如方面8所述的处理方法,其中,在第四存储设备的带宽比第一存储设备的带宽高预定数量级的情况下,并发进行在第四存储设备中的边分组的处理和对第一存储设备进行的顶点的数据更新处理。
[0025]13、如方面I到4任一项所述的处理方法,所述预定处理为BFS、WCC、SpMV,PageRank中的任一个,其中BFS为对图进行宽度优先搜索、WCC为获取无向图的弱连通分支、SpMV为稀疏向量乘、PageRank为对网络中的顶点进行排序。
[0026]14、如方面I到4任一项所述的处理方法,所述计算机为单个计算机。
[0027]15、如方面I到4任一项所述的处理方法,处理过程中,对边分组的访问是只读访问。
[0028]16、如方面I到4中任一项所述的处理方法,其中在预处理之前和预处理之后,对边的顺序没有限制。
[0029]17、如方面I到4中任一项所述的处理方法,还包括在第一或第二存储设备上存储图的元数据,元数据包括顶点的数目、边的数目、边的类型以及P的大小。
[0030]18、如方面I到4中任一项所述的处理方法,第二存储设备是硬盘,在预处理阶段,先获得各个边分组数据的文件,然后按照后续流式处理时边分组被访问的顺序将多个边分组的文件合并为一个文件写到硬盘上,并维护索引信息,使得能够定位合并后的文件中的具体边分组数据。
[0031]19、根据本发明另一方面,提供了一种计算机执行的图的栅格化表示及存储方法,包括:获取原始图的图结构信息;根据图结构信息,将图的所有顶点分为P个顶点分组V,各个顶点分组V之间不重叠,将各个顶点分组V的数据存储在第一存储设备上;根据图结构信息,按照如下方式得到P*P个边分组E,其中P为大于等于2的整数:对于P个顶点分组中的第i个顶点分组,以及P个分组中的第j个顶点分组,其中i = I到P,j = I到P,以第i个顶点分组中的各个顶点为边起点候选,以第j个顶点分组中的各个顶点为边终点候选,依据图结构信息,得到各个边,构成以i和j来标识的边分组EijJfP-P个边分组E的数据存储在第二存储设备上,其中在后续对如此存储的图的边分组进行处理时,将相应的起始顶点分组和终点顶点分组的数据整体加载到第三存储设备中,该第三存储设备的读取速度高于第一存储设备的读取速度。
[0032]20、如方面19所述的栅格化表示及存储方法,所述第二存储设备是硬盘或固态盘。
[0033]21、如方面19所述的栅格化表示及存储方法,其中每个边分组Eij以文件系统中的文件形式进行读写各个边分组为单独的文件。
[0034]22、如方面20所述的栅格化表示及存储方法,其中所述第二存储设备是硬盘,按照边分组在后续流式处理阶段被访问的顺序,将多个边分组文件合并为一个文件,并维持索引信息,使得根据索引能够定位到文件中的具体边分组数据。
[0035]23、如方面19所述的栅格化表示及存储方法,还在第一或第二存储设备上存储图的元数据,元数据包括顶点的数目、边的数目、边的类型以及P的大小。
[0036]24、如方面19所述的栅格化表示及存储方法,其中对边分组中边的顺序没有限制。
[0037]25、如方面19到24任一项所述的栅格化表示及存储方法,所述计算机为单个计算机。
[0038]26、根据另一方面,提供了一种图处理装置,包括:原始图结构获取部件、预处理部件和流化处理-更新部件,图结构获取部件用于获取原始图的图结构信息;预处理部件用于将图处理为边分组的栅格结构,包括:根据图结构信息,将图的所有顶点分为P个顶点分组V,各个顶点分组V之间不重叠,将各个顶点分组V的数据存储在第一存储设备上;根据图结构信息,按照如下方式得到p*p个边分组E,其中P为大于等于2的整数:对于P个顶点分组中的第i个顶点分组,以及P个分组中的第j个顶点分组,其中i = I到P,j = I到P,以第i个顶点分组中的各个顶点为边起点候选,以第j个顶点分组中的各个顶点为边终点候选,依据图结构信息,得到各个边,构成以i和j来标识的边分组Eij,将P*P个边分组E的数据存储在第二存储设备上;以及流式处理-更新部件用于按照预定的处理函数,一个边分组一个边分组进行处理,其中对于每个边分组,流式处理其中的边,即按照该预定的处理函数逐个对边分组中的边进行处理,其中在处理具体边分组Eiij时,从第二存储设备将该边分组的数据顺序读入第三存储设备中,以及将起始顶点分组\的数据和终点顶点分组V j的数据读入第四存储设备中,依据起始顶点分组Vi的数据、终点顶点分组V」的数据和边分组Eij的数据,按照预定的处理函数,逐个对该边分组E u中的边进行处理。
[0039]27、根据本发明的另一方面,提供了一种由计算机执行的图的处理方法,包括:原始图结构获取步骤,获取原始图的图结构信息;预处理步骤,用于将图处理为边分组的栅格结构,包括:根据图结构信息,将图的所有顶点分为P个顶点分组V,各个顶点分组V之间不重叠,保存关于顶点分组的信息,顶点分组的数据被存储在慢速存储设备上;根据图结构信息,按照如下方式得到P*P个边分组E,其中P为大于等于2的整数:对于P个顶点分组中的第i个顶点分组,以及P个分组中的第j个顶点分组,其中i = I到P,j = I到P,以第i个顶点分组中的各个顶点为边起点候选,以第j个顶点分组中的各个顶点为边终点候选,依据图结构信息,得到各个边,构成以i和j来标识的边分组Eij,将该第i个顶点分组称为起始顶点分组,将第j个顶点分组称为终点顶点分组,将P*P个边分组E的数据存储在慢速存储设备上,其中每个边分组中的各个边的数据被以顺序写方式存储在慢速存储设备中,流式处理步骤,包括循环执行下述操作:将多个未处理的边分组的数据和与该多个未处理的边分组的每个相关联的起始顶点分组和终点顶点分组的数据读入第一级别的快速存储设备中;以及对于该多个未处理的边分组的每个,将该边分组的数据和相关联的起
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1