一种大规模图结构数据处理方法、装置和系统的制作方法

文档序号:6518572阅读:300来源:国知局
一种大规模图结构数据处理方法、装置和系统的制作方法
【专利摘要】本发明公开了一种大规模图结构数据处理方法、装置和系统,以提高数据计算效率并增强系统运行的可靠性。所述方法包括:从节点将图结构数据读取至内存;对内存中的图结构数据进行预处理,得到图结构数据中相邻顶点处于同一数据片的至少一个数据片;将预处理所得至少一个数据片映射至从节点;从节点采用迭代算法对映射至从节点的数据片进行计算。由于相邻顶点的信息映射至同一从节点而不是不同从节点,如此,从节点采用迭代算法对映射至从节点的数据片进行计算时,无需与其他从节点进行通信,由此减少了通信量,降低对集群内带宽资源的需求,并且提高了集群系统及其节点的计算效率。
【专利说明】一种大规模图结构数据处理方法、装置和系统
【技术领域】
[0001]本发明涉及分布式计算领域,具体涉及一种大规模图结构数据处理方法、装置和系统。
【背景技术】
[0002]图(Graph)是一种由顶点的集合和顶点之间的关联关系即边的集合共同形成的数据结构。图也可以称之为网络,实际应用中很多结构都可以转化为图的方式表达出来,例如,矩阵,其每一行每一列对应一个顶点,行与列的交叉处其值不为零时认为有边存在,而边的权重为该值的大小;再如,城市地图,每一个城市(或居民地址)为一个顶点,不同城市(或居民地址)之间相连的路线称之为边。图结构是一种抽象数据结构,是对象(顶点、节点)及其关系(边)的模型。现实世界中,图结构数据的分布十分普遍,例如,社交网络中用户之间的关系,蛋白质结构关联关系,科技文献体反映出的科学家之间的协作关系,以及因特网(Internet)中以超链接体现出的网页之间的关系等等,这些都可以直接或间接地转化图结构这一类数据结构。以顶点和边共同构成的集合组成的图结构一般可以真实贴近的表达现实世界中的真实关联关系。对图结构数据的挖掘一般在识别对象关系模式、结构、检测异常等等,并且,对图结构数据的分析与挖掘是当前的一个热点,高效率地处理大规模数据有着十分迫切的需求。当前的有效方法一般建立在大规模处理平台之上,构建一个适应图结构数据特性易扩展的平台框架是一个可取的技术方向。
[0003]与图结构数据相关的计算具有特别的性质,一般对图的计算算法需要对顶点与边直接执行读写操作,这使得单个点的计算对全局数据的依赖。若采用传统的方法直接计算,伴随图中顶点与边的规模的增长,则运算耗时会达到不能忍耐的程度。虽然分布式系统的普及为大规模数据处理带来了可能性,然而,若直接采用分布式计算方法设计算法,往往开发复杂度极高,使得调试、优化非常困难。如何在分布式系统中高效率地处理大规模图结构数据仍是业界的一个挑战。
[0004]现有的一种针对图结构数据处理的计算框架包括Giraph这一迭代的图计算系统。Giraph基于Google于2010年发表的关于Pregel的论文的开源实现,从计算模型而言,是基于批量同步并行(Bulk Synchronization Parallel, BSP)模型。BSP计算模型,是一种大规模同步并行化模型,它将计算抽象为节点与通信的交换网络。BSP计算模型中的每一个任务分由多次迭代完成,每一次迭代为一个超级步(Superstep),其包括计算步与通信步。计算步完成算法计算任务,可由开发者自定义运算类型,而通信步完成不同进程之间的通信过程,发送方定义接收方、消息内容,并封装消息发送给系统,由系统送达消息。超级步内多个进程同时执行,除第一个超级步外,其余超级步均先接受上一个超级步发送来的消息,然后执行计算。
[0005]Giraph依赖于图结构数据的有效划分以降低通信(主要是收发消息)量并保持负载均衡,然而,图结构数据的划分是基于哈希函数的随机划分,因此会破坏计算的局部性。例如,Giraph需要频繁交换其邻接顶点的信息,而此时邻接顶点划分到不同机器上,因此导致通信量剧烈增加,严重降低计算效率。

【发明内容】

[0006]本发明实施例提供一种大规模图结构数据处理方法、装置和系统,以提高数据计算效率并增强系统运行的可靠性。
[0007]本发明实施例提供一种大规模图结构数据处理方法,所述方法包括:
[0008]从节点将图结构数据读取至内存;
[0009]对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片;
[0010]将所述预处理所得至少一个数据片映射至从节点;
[0011]所述从节点采用迭代算法对所述映射至所述从节点的数据片进行计算。
[0012]本发明另一实施例提供一种大规模图结构数据处理装置,所述装置包括:
[0013]数据读取单元,用于将图结构数据读取至内存;
[0014]数据预处理单元,用于对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片;
[0015]映射单元,用于将所述预处理所得至少一个数据片映射至从节点;
[0016]算法执行单元,用于采用迭代算法对所述映射至所述从节点的数据片进行计算。
[0017]本发明另一实施例提供一种大规模图结构数据处理系统,所述系统包括至少两个从节点和至少两个主节点,所述至少两个主节点管控各自控制域内的至少两个从节点;
[0018]所述至少两个从节点中的任意一个从节点用于将图结构数据读取至内存,对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片;
[0019]所述至少两个主节点中的任意一个主节点用于将所述预处理所得至少一个数据片映射至从节点;
[0020]所述至少两个从节点中的任意一个从节点用于采用迭代算法对所述映射至所述从节点的数据片进行计算。
[0021]从上述本发明实施例可知,经过预处理后,图结构数据中相邻顶点处于同一数据片,而预处理后得到的每个这种数据片是映射至一个从节点。由于相邻顶点的信息都尽其所能地映射至同一从节点而不是不同从节点,如此,对于映射至同一从节点的相邻顶点,从节点采用迭代算法进行计算时,无需与其他从节点进行通信,由此减少了通信量(尤其是数据分片时设定的上限比较大时,即使仍然有部分相邻顶点的信息不能映射至同一从节点,也能减少通信量),降低对集群内带宽资源的需求,并且提高了集群系统及其节点的计算效率。
【专利附图】

【附图说明】
[0022]图1是本发明实施例提供的大规模图结构数据处理方法的基本流程示意图;
[0023]图2是本发明实施例提供的将图结构数据中相邻顶点分割至同一数据片的分割示意图;
[0024]图3是本发明实施例提供的大规模图结构数据处理装置逻辑结构示意图;[0025]图4是本发明另一实施例提供的大规模图结构数据处理装置逻辑结构示意图;
[0026]图5_a是本发明另一实施例提供的大规模图结构数据处理装置逻辑结构示意图;
[0027]图5_b是本发明另一实施例提供的大规模图结构数据处理装置逻辑结构示意图;
[0028]图6_a是本发明另一实施例提供的大规模图结构数据处理装置逻辑结构示意图;
[0029]图6_b是本发明另一实施例提供的大规模图结构数据处理装置逻辑结构示意图;
[0030]图7是本发明实施例提供的大规模图结构数据处理系统逻辑结构示意图。
【具体实施方式】
[0031]本发明实施例提供一种大规模图结构数据处理方法,包括:从节点将图结构数据读取至内存;对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片;将所述预处理所得至少一个数据片映射至从节点;所述从节点采用迭代算法对所述映射至所述从节点的数据片进行计算。本发明实施例还提供相应的一种大规模图结构数据处理装置和系统。以下分别进行详细说明。
[0032]本发明实施例的大规模图结构数据处理方法的基本流程可参考图1,主要包括如下步骤SlOl至步骤S104:
[0033]S101,从节点将图结构数据读取至内存。
[0034]本发明实施例中,从节点是由主控(Master)计算节点和从属(Slave)计算节点构成的分布式集群系统中的Slave计算节点,其中,所述的计算节点可以是计算机或者是具有计算功能的装置。在本发明实施例中,图结构数据可以存储在硬盘或固态硬盘(SolidState Disk,SSD)等持久存储介质上。为执行定制算法,从节点需要将存储在持久存储介质上的图结构数据读取到内存(RAM)中。常用的数据存储格式并不统一,但数据存储格式并不影响对数据的操作。同时,可能有用户自定义的操作,因此读取过程可以由用户自定义方式,也可以采用默认设置。具体地,首先打开指定文件,设定内存地址,将文件内容按行(或用户自定义)的方式读取到预设的位置,其中,从文件读取到的内容需要解析成可计算的格式。在本发明实施例中,顶点、边的存储格式包括:顶点,顶点值,[边,边的值],其中,中括号表示其中的数据可出现零次到多次。以面向对象的方法构建顶点的存储结构,则构建顶点类,其数据存储为属性值。
[0035]S102,对内存中的图结构数据进行预处理,得到图结构数据中相邻顶点处于同一数据片的至少一个数据片。
[0036]现有技术中,图结构数据中相邻顶点可能划分到不同计算节点上,由于相邻顶点具有公用的边,其中一个计算节点在执行针对相邻顶点中一个顶点的计算过程中,需要与执行针对相邻顶点中另一个顶点的另一计算节点进行频繁通信,以交换相邻顶点的信息,如此一来,导致分布式集群系统内通信量的剧增,严重降低计算效率。
[0037]为了解决上述现有技术存在的问题,本发明实施例提供的方法并不是直接将读取到内存的图结构数据直接执行计算,而是进行预处理,包括:
[0038]S1021,根据图结构数据的结构确定相邻顶点。
[0039]根据图结构数据的结构确定相邻顶点是本领域的公知常识,此处不做赘述。
[0040]S1022,以图结构数据中任意一个顶点为初始顶点,采用广度优先遍历,尽其所能地将所述图结构数据中相邻顶点分割至同一数据片,其中,分割至同一数据片中的顶点数量以预设值为上限。
[0041]广度优先遍历属于本领域公知常识,这里不做赘述,此处主要对如何将图结构数据中相邻顶点分割至同一数据片进行说明,请参阅附图2。对于附图2示例的图结构数据,在图中随机选择一个顶点作为广度优先遍历的初始顶点,如附图2中的黑色顶点作为遍历的初始顶点。从该初始顶点开始进行广度优先遍历,直到所遍历到的顶点数量达到一个预设值(该预设值可采用默认值,也可由用户设定)为止。以顶点数量达到所述预设值时所遍历的一个顶点以及之前遍历的顶点(包括初始顶点)作为一个数据片,从原图结构数据分割开来,分割该数据片的分割曲线如附图2中的曲线所示。任取分割曲线另一侧的一个顶点作为下次迭代的起点,重复以上分割方法,直至所有顶点均已分割到某一个数据片中为止。需要说明的是,对于有向图,每个顶点仅保存以其为起始顶点的边。进一步地,为保证分割后的数据片能够具有计算时的良好的局部性,对每个数据片中的顶点单独编号建立索引,如此,可以直接由顶点信息映射到对应的数据片,建立快捷查询机制。
[0042]在上述预处理方法中,为保证分割的一致性即同一顶点不同时出现在不同的数据片中,针对大规模图结构数据,可以让多个Slave计算节点同时执行数据预处理。图结构数据依其邻接性进行编号,然后依据编号将数据分配到不同的Slave计算节点上。采用前述预处理中的数据片分割方法,每个Slave计算节点进一步分割接收到的数据块,以分割成可独立处理的数据片。
[0043]由于经过预处理后图结构数据中相邻顶点处于同一数据片,因此,后续将一个数据片映射至同一从节点后,从节点采用迭代算法执行针对相邻顶点的其中一个顶点进行计算时,无需与其他从节点进行通信获知该相邻顶点中另一顶点的信息,由此减少了通信量。
[0044]S103,将预处理所得至少一个数据片映射至从节点。
[0045]在本发明实施例中,为了保证系统的鲁棒性,可以将所述预处理所得至少一个数据片中同一数据片映射至由同一主节点管控的控制域内至少两个从节点,由该主节点决定选择其中一个从节点作为执行节点执行计算任务。若该从节点在执行计算过程中出现异常或错误,则可以选择另一从节点继续执行计算,如此,保证了系统运行的稳定。
[0046]S104,从节点采用迭代算法对映射至从节点的数据片进行计算。
[0047]相应于步骤S103中将预处理所得至少一个数据片映射至从节点的一个实施例,即,将预处理所得至少一个数据片中同一数据片映射至由同一主节点管控的控制域内至少两个从节点,作为从节点采用迭代算法对映射至从节点的数据片进行计算的一个实施例,可以是至少两个从节点中任意一个从节点采用迭代算法对映射至从节点的数据片进行计算
[0048]为了减少分布式集群系统内节点间通信量,降低通信延迟,在本发明实施例中,上述方法还包括:协调图结构数据读取、预处理、映射和数据片计算过程中主节点与主节点之间以及主节点与从节点之间的消息传递,具体是采用两层级通信机制,即主节点处理主节点与主节点之间以及主节点与从节点之间的通信传输与同步,从节点处理主节点与从节点之间的通信传输与同步。
[0049]为了保证在执行计算的从节点出现异常或错误时,不中断系统的运行状态,在本发明实施例中,上述方法还包括:将对映射至从节点的数据片进行计算时所得中间结果存储至从节点中的持久存储介质,在执行计算的从节点出现异常或错误时,将所述中间结果重新映射至由同一主节点管控的控制域内另一从节点,由所述另一从节点根据所述中间结果继续计算过程。
[0050]从上述本发明实施例提供的大规模图结构数据处理方法可知,经过预处理后,图结构数据中相邻顶点处于同一数据片,而预处理后得到的每个这种数据片是映射至一个从节点。由于相邻顶点的信息都尽其所能地映射至同一从节点而不是不同从节点,如此,对于映射至同一从节点的相邻顶点,从节点采用迭代算法进行计算时,无需与其他从节点进行通信,由此减少了通信量(尤其是数据分片时设定的上限比较大时,即使仍然有部分相邻顶点的信息不能映射至同一从节点,也能减少通信量),降低对集群内带宽资源的需求,并且提高了集群系统及其节点的计算效率。
[0051]下面对用于执行上述大规模图结构数据处理方法的本发明实施例的大规模图结构数据处理装置进行说明,其基本逻辑结构参考附图3。为了便于说明,附图3示例的大规模图结构数据处理装置仅仅示出了与本发明实施例相关的部分。需要说明的是,附图3示例的大规模图结构数据处理装置中的功能单元可以由分布式集群系统中主控(Master)计算节点(以下简称主节点)和\或从节点实现,即大规模图结构数据处理装置中的功能单元既可以是主节点的功能单元,又可以是从节点的功能单元,还可以是的由主节点和从节点共同实现的功能单元。附图3示例的大规模图结构数据处理装置主要包括数据读取单元301、数据预处理单元302、映射单元303和算法执行单元304,各单元详细说明如下:
[0052]数据读取单元301,用于将图结构数据读取至内存。
[0053]具体地,首先打开指定文件,设定内存地址,将文件内容按行(或用户自定义)的方式读取到预设的位置,其中,从文件读取到的内容需要解析成可计算的格式。在本发明实施例中,顶点、边的存储格式包括:顶点,顶点值,[边,边的值],其中,中括号表示其中的数据可出现零次到多次。以面向对象的方法构建顶点的存储结构,则构建顶点类,其数据存储为属性值。
[0054]数据预处理单元302,用于对内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片。
[0055]映射单元303,用于将预处理所得至少一个数据片映射至从节点。
[0056]算法执行单元304,用于采用迭代算法对映射至从节点的数据片进行计算。
[0057]用户定制算法以继承顶点基类并重写计算方法来实现。具体地,算法支持以顶点为中心的计算,即计算算法均从顶点出发,涉及到对顶点、边的修改更新、增加与删除。该计算算法应包含完整的迭代操作,即包括计算步与通信步。用户需从顶点计算的思想出发设计算法,顶点设定有运算状态与终止状态,当不再有计算状态的顶点存在,也不再有新的通信产生时,系统终止算法运行。或用户自定义终止的条件,并在计算算法函数中实现。用户亦可以自定义桩(主)函数,此时需用户指定具体的读写操作方法。算法执行单元304负责按照预定顺序调用用户自定义的算法,以默认桩函数的形式初始化系统,并开始迭代,检测到运行结束后,负责将计算结果写回持久存储介质。
[0058]需要说明的是,以上附图3示例的大规模图结构数据处理装置的实施方式中,各功能单元的划分仅是举例说明,实际应用中可以根据需要,例如相应硬件的配置要求或者软件的实现的便利考虑,而将上述功能分配由不同的功能单元完成,即将所述大规模图结构数据处理装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。而且,实际应用中,本实施例中的相应的功能模块可以是由相应的硬件实现,也可以由相应的硬件执行相应的软件完成,例如,前述的数据预处理单元,可以是具有执行前述对内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片的硬件,例如数据预处理器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备;再如前述的映射单元,可以是具有执行前述将所述预处理所得至少一个数据片映射至从节点功能的硬件,例如映射器,也可以是能够执行相应计算机程序从而完成前述功能的一般处理器或者其他硬件设备(本说明书提供的各个实施例都可应用上述描述原则)。
[0059]附图3示例的数据预处理单元302可以包括相邻顶点确定单元401和分割单元402,如附图4所示本发明另一实施例提供的大规模图结构数据处理装置,其中:
[0060]相邻顶点确定单元401,用于根据图结构数据的结构确定相邻顶点;
[0061]分割单元402,用于以图结构数据中任意一个顶点为初始顶点,采用广度优先遍历,尽其所能地将所述图结构数据中相邻顶点分割至同一数据片,所述分割至同一数据片中的顶点数量以预设值为上限。以附图2示例的图结构数据为例,分割单元402具体执行:在图中随机选择一个顶点作为广度优先遍历的初始顶点,如附图2中的黑色顶点作为遍历的初始顶点;从该初始顶点开始进行广度优先遍历,直到所遍历到的顶点数量达到一个预设值(该预设值可采用默认值,也可由用户设定)为止;以顶点数量达到所述预设值时所遍历的一个顶点以及之前遍历的顶点(包括初始顶点)作为一个数据片,从原图结构数据分割开来,分割该数据片的分割曲线如附图2中的曲线所示;任取分割曲线另一侧的一个顶点作为下次迭代的起点,重复以上分割方法,直至所有顶点均已分割到某一个数据片中为止。
[0062]附图3示例的映射单元303具体用于将预处理所得至少一个数据片中同一数据片映射至由同一主节点管控的控制域内至少两个从节点,算法执行单元304位于至少两个从节点中任意一个从节点,具体用于采用迭代算法对映射至从节点的数据片进行计算。
[0063]附图3或附图4示例的大规模图结构数据处理装置还可以包括通信控制单元501,如附图5-a或附图5-b所示本发明另一实施例提供的大规模图结构数据处理装置。通信控制单元501用于协调数据读取单元301执行图结构数据读取、数据预处理单元302执行预处理、映射单元303执行映射和算法执行单元304执行数据片计算过程中主节点与主节点之间以及主节点与从节点之间的消息传递。具体地,通信控制单元501协调分布式集群系统中节点(包括主节点和从节点)之间的消息传递,分为MasterSwitch与SlaveSwitch两个部分,对应于两级通信机制即主节点-主节点,从节点-从节点,其中,MasterSwitch运行在主节点上,SlaveSwitch运行在从节点上,每个节点仅运行一个Switch实例。主节点之间是可见的,每个主节点管理一个由从节点构成的域,该域内可存在若干个从节点。从节点之间不直接可见,须由主节点作为桥梁转发或传输消息。MasterSwitch部分处理主节点-主节点以及主节点-从节点之间的通信传输与同步,由于主节点控制着整个系统的运行进度,掌握运行状态。主节点管理数据片在从节点上的分布信息、从节点的计算状态及数据片内迭代算法的运行进度等。SlaveSwitch部分处理主节点-从节点之间的通信传输与同步。从节点内部运算产生消息通信需求,根据消息的接收方地址来确定是否将该消息发送给从节点所属的域。
[0064]附图3或附图4示例的大规模图结构数据处理装置还可以包括容错恢复单元601,如附图6-a或附图6-b所示本发明另一实施例提供的大规模图结构数据处理装置。容错恢复单元601用于将对映射至从节点的数据片进行计算时所得中间结果存储至从节点中的持久存储介质,在执行计算的从节点出现异常或错误时,将所述中间结果重新映射至由同一主节点管控的控制域内另一从节点,由所述另一从节点根据所述中间结果继续计算过程。
[0065]请参阅附图7,是本发明实施例提供的一种大规模图结构数据处理系统结构示意图,其可以是分布式集群系统。为了便于说明,仅仅示出了与本发明实施例相关的部分。与现有技术提供的大规模图结构数据处理系统(例如,Giraph系统)不同的是,附图7示例的大规模图结构数据处理系统包括至少两个从节点(即Slave计算节点)和至少两个主节点(即Master计算节点),至少两个主节点管控各自控制域内的至少两个从节点,其中,主节点,主节点管理其定义的域,域内还有至少两个从节点,一个从节点仅与管理其所属域的主节点通信,具体地,主节点负责整个系统的运行状态控制以及负责通信管理、计算迭代控制、异常错误恢复等,,从节点负责具体执行数据存储与定制算法计算,并且,为保证数据存储的可靠性,经预处理后得到的数据片存储2份以上,且每份均在同一个域内的不同从节点上,如此,当一个从节点损坏时,该域内另一个从节点仍可以继续执行该算法的迭代运算。每次算法迭代产生的通信、顶点的当前状态值等中间结果周期性地存储到持久介质。当运算至某一状态某个从节点出错时,则可从上一次保存的数据开始继续运行而不需重启计算程序。
[0066]附图7示例的大规模图结构数据处理系统为用户迭代算法提供统一的同步方式(类似于BSP模型),每一次迭代称为一个超级步,包括计算步和通信步。首先由主节点(即Master计算节点)启动迭代算法,然后从(Slave)机器完成一个计算任务中的计算步,由计算步产生的数据交换需求转交通信步,以完成通信同步,通信步根据计算步定义的接收方、消息内容等,封装消息并发送给通信控制单元,由通信控制单元完成消息的传递。一个超级步执行数据中所有可计算顶点的计算,多个进程同时执行,除第一个超级步外其余超级步,均在完成接收上一个超级步发送来的消息之后,才执行本次计算步操作。由于通信仅在两个相邻的超级步之间发生,且计算步只在通信步完成后执行,因此不需要加锁控制同步,可以有效地避免传统分布式处理中遇到的死锁和数据竞争问题,为调试、优化带来极大便利。当数据中无可计算顶点也无消息传递且无计算状态顶点时,或达到用户自定义的迭代终止条件(例如次数上界等),则迭代算法终止。
[0067]附图7示例的大规模图结构数据处理系统中,至少两个从节点中的任意一个从节点用于将图结构数据读取至内存,对内存中的图结构数据进行预处理,得到图结构数据中相邻顶点处于同一数据片的至少一个数据片,至少两个主节点中的任意一个主节点用于将预处理所得至少一个数据片映射至从节点,至少两个从节点中的任意一个从节点用于采用迭代算法对映射至从节点的数据片进行计算。这种处理方式的优点在于:若该从节点在执行计算过程中出现异常或错误,则可以选择另一从节点继续执行计算,如此,保证了系统运行的稳定。
[0068]在附图7示例的大规模图结构数据处理系统中,至少两个从节点中的任意一个从节点用于根据图结构数据的结构确定相邻顶点,以图结构数据中任意一个顶点为初始顶点,采用广度优先遍历,尽其所能地将所述图结构数据中相邻顶点分割至同一数据片,其中,分割至同一数据片中的顶点数量以预设值为上限。以附图2示例的图结构数据为例,至少两个从节点中的任意一个从节点在对图结构数据进行分割,得到数据片时具体执行:在图中随机选择一个顶点作为广度优先遍历的初始顶点,如附图2中的黑色顶点作为遍历的初始顶点;从该初始顶点开始进行广度优先遍历,直到所遍历到的顶点数量达到一个预设值(该预设值可采用默认值,也可由用户设定)为止;以顶点数量达到所述预设值时所遍历的一个顶点以及之前遍历的顶点(包括初始顶点)作为一个数据片,从原图结构数据分割开来,分割该数据片的分割曲线如附图2中的曲线所示;任取分割曲线另一侧的一个顶点作为下次迭代的起点,重复以上分割方法,直至所有顶点均已分割到某一个数据片中为止。在本实施例中,对图结构数据所做的预处理,即,将图结构数据分割成内部关联较密切的数据片为处理单位,使从节点执行的计算算法保持了良好的局部性特点,可显著减少数据读取延迟,减少通信量,降低对集群内带宽资源的需求。
[0069]附图7示例的大规模图结构数据处理系统中,至少两个主节点中的任意一个主节点还用于协调图结构数据读取、预处理、映射和数据片计算过程中主节点与主节点之间以及主节点与从节点之间的消息传递。实际上,这种协调分为MasterSwitch与SlaveSwitch两个部分执行,对应于两级通信机制即主节点_主节点,从节点_从节点,其中,MasterSwitch运行在主节点上,SlaveSwitch运行在从节点上,每个节点仅运行一个Switch实例。主节点之间是可见的,每个主节点管理一个由从节点构成的域,该域内可存在若干个从节点。从节点之间不直接可见,须由主节点作为桥梁转发或传输消息。MasterSwitch部分处理主节点-主节点以及主节点_从节点之间的通信传输与同步,由于主节点控制着整个系统的运行进度,掌握运行状态。主节点管理数据片在从节点上的分布信息、从节点的计算状态及数据片内迭代算法的运行进度等。SlaveSwitch部分处理主节点-从节点之间的通信传输与同步。从节点内部运算产生消息通信需求,根据消息的接收方地址来确定是否将该消息发送给从节点所属的域。上述两级通信机制的优点在于减少节点之间的通信量,降低延迟,可通过多个主节点并行运行,从而保证系统运行的可靠性与容错恢复能力。
[0070]附图7示例的大规模图结构数据处理系统中,至少两个从节点中任意一个从节点还用于将对映射至所述从节点的数据片进行计算时所得中间结果存储至从节点中的持久存储介质,至少两个主节点中的任意一个主节点还用于在执行计算的从节点出现异常或错误时,将所述中间结果重新映射至由同一主节点管控的控制域内另一从节点,由所述另一从节点根据所述中间结果继续所述计算过程。
[0071]需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0072]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
[0073]以上对本发明实施例所提供的一种大规模图结构数据处理方法、装置和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种大规模图结构数据处理方法,其特征在于,所述方法包括: 从节点将图结构数据读取至内存; 对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片; 将所述预处理所得至少一个数据片映射至从节点; 所述从节点采用迭代算法对所述映射至所述从节点的数据片进行计算。
2.根据权利要求1所述的方法,其特征在于,所述对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片,包括: 根据所述图结构数据的结构确定所述相邻顶点; 以所述图结构数据中任意一个顶点为初始顶点,采用广度优先遍历,尽其所能地将所述图结构数据中相邻顶点分割至同一数据片,所述分割至同一数据片中的顶点数量以预设值为上限。
3.根据权利要求1所述的方法,其特征在于,所述将所述预处理所得至少一个数据片映射至从节点包括:将所述预处理所得至少一个数据片中同一数据片映射至由同一主节点管控的控制域内至少两个从节点; 所述所述从节点采用迭代算法对所述映射至所述从节点的数据片进行计算包括:所述至少两个从节点中任意一个从节点采用迭代算法对所述映射至从节点的数据片进行计算。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括: 协调所述图结构数据读取、预处理、映射和数据片计算过程中主节点与主节点之间以及主节点与从节点之间的消息传递。
5.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括: 将对所述映射至所述从节点的数据片进行计算时所得中间结果存储至所述从节点中的持久存储介质; 在执行计算的从节点出现异常或错误时,将所述中间结果重新映射至由同一主节点管控的控制域内另一从节点,由所述另一从节点根据所述中间结果继续所述计算过程。
6.一种大规模图结构数据处理装置,其特征在于,所述装置包括: 数据读取单元,用于将图结构数据读取至内存; 数据预处理单元,用于对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片; 映射单元,用于将所述预处理所得至少一个数据片映射至从节点; 算法执行单元,用于采用迭代算法对所述映射至所述从节点的数据片进行计算。
7.根据权利要求6所述的装置,其特征在于,所述数据预处理单元包括: 相邻顶点确定单元,用于根据所述图结构数据的结构确定所述相邻顶点; 分割单元,用于以所述图结构数据中任意一个顶点为初始顶点,采用广度优先遍历,尽其所能地将所述图结构数据中相邻顶点分割至同一数据片,所述分割至同一数据片中的顶点数量以预设值为上限。
8.根据权利要求6所述的装置,其特征在于,所述映射单元具体用于将所述预处理所得至少一个数据片中同一数据片映射至由同一主节点管控的控制域内至少两个从节点; 所述算法执行单元位于所述至少两个从节点中任意一个从节点,所述算法执行单元具体用于采用迭代算法对所述映射至从节点的数据片进行计算。
9.根据权利要求6至8任意一项所述的装置,其特征在于,所述装置还包括: 通信控制单元,用于协调所述图结构数据读取、预处理、映射和数据片计算过程中主节点与主节点之间以及主节点与从节点之间的消息传递。
10.根据权利要求6至8任意一项所述的装置,其特征在于,所述装置还包括: 容错恢复单元,用于将对所述映射至所述从节点的数据片进行计算时所得中间结果存储至所述从节点中的持久存储介质,在执行计算的从节点出现异常或错误时,将所述中间结果重新映射至由同一主节点管控的控制域内另一从节点,由所述另一从节点根据所述中间结果继续所述计算过程。
11.一种大规模图结构数据处理系统,其特征在于,所述系统包括至少两个从节点和至少两个主节点,所述至少两个主节点管控各自控制域内的至少两个从节点; 所述至少两个从节点中的任意一个从节点用于将图结构数据读取至内存,对所述内存中的图结构数据进行预处理,得到所述图结构数据中相邻顶点处于同一数据片的至少一个数据片; 所述至少两个主节点中的任意一个主节点用于将所述预处理所得至少一个数据片映射至从节点; 所述至少两个从节点中的任意一个从节点用于采用迭代算法对所述映射至所述从节点的数据片进行计算。
12.根据权利要求11所述的系统,其特征在于,所述至少两个从节点中的任意一个从节点用于根据所述图结构数据的结构确定所述相邻顶点,以所述图结构数据中任意一个顶点为初始顶点,采用广度优先遍历,尽其所能地将所述图结构数据中相邻顶点分割至同一数据片,所述分割至同一数据片中的顶点数量以预设值为上限。
13.根据权利要求11所述的系统,其特征在于,所述至少两个主节点中的任意一个主节点用于将所述预处理所得至少一个数据片中同一数据片映射至由同一主节点管控的控制域内至少两个从节点,所述至少两个从节点中任意一个从节点采用迭代算法对所述映射至从节点的数据片进行计算。
14.根据权利要求11至13任意一项所述的系统,其特征在于,所述至少两个主节点中的任意一个主节点还用于协调所述图结构数据读取、预处理、映射和数据片计算过程中主节点与主节点之间以及主节点与从节点之间的消息传递。
15.根据权利要求11至13任意一项所述的系统,其特征在于,所述至少两个从节点中任意一个从节点还用于将对所述映射至所述从节点的数据片进行计算时所得中间结果存储至所述从节点中的持久存储介质,所述至少两个主节点中的任意一个主节点还用于在执行计算的从节点出现异常或错误时,将所述中间结果重新映射至由同一主节点管控的控制域内另一从节点,由所述另一从节点根据所述中间结果继续所述计算过程。
【文档编号】G06F12/02GK103631878SQ201310557066
【公开日】2014年3月12日 申请日期:2013年11月8日 优先权日:2013年11月8日
【发明者】刘明君, 赵中英, 冯铮, 何一峰, 冯圣中 申请人:中国科学院深圳先进技术研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1