基于图计算引擎的异步消息发送方法及系统与流程

文档序号:11138432阅读:274来源:国知局
基于图计算引擎的异步消息发送方法及系统与制造工艺

本发明涉及图数据技术领域,具体涉及一种基于图计算引擎的异步消息发送方法及系统。



背景技术:

大图形可以很好地应用于各种图形分析和挖掘应用程序,例如,社会网络分析、模式识别、网站分类和社会媒体营销等。但是,随着需要处理图形的体积越来越庞大,单个服务器已经不堪重负,因此,一系列大规模分布式并行框架图应运而生。分布式并行框架图是将一张大图分割成多个子图,然后将这些分开存储,因此计算时可以多个子图并行运行,大大提高运算效率,可应用于大规模的现实世界的图形问题。

图的切割方法分为边切割和顶点切割。边切割通过切割边,将顶点均匀地分配到各个子图内,被切割的边跨越多个子图,边切割后的通信和存储开销与切割的边的数量成正比的。与边切割相比,顶点切割将各个边均匀地分配到各个子图内,并允许顶点跨越多个子图,顶点切割的通信和存储开销与每个顶点所跨越的图形分区的数目成正比。有理论和实验结果表明,现实世界的图有良好的顶点切割,因此,顶点切割更适用于现实世界的图形问题。

切分后的子图分别存储在多台机器上,每一个子图的信息转换需要消耗网络资源,尤其对一些大的现实世界的图形来说,子图的数量很多,子图间的信息交互也会很频繁。

基于现有的图数据存储结构,子图存储的信息包括点的信息和边的信息,点的信包括点的编号和点的属性,边的信息包括边的源点、终点以及边的属性。基于现有的图数据存储结构,顶点和边的信息分开存储,增加了通信开销;而且存储结构中缺少索引信息,大大降低了计算速率。

另外,现有的基于同步并行(BSP)的同步消息发送模式,需要频繁地在每一个子图间进行信息交换,着会消耗大量的网络通信资源,严重影响系统的性能,无法适应一些大的现实世界的图形的计算。



技术实现要素:

针对现有技术中的缺陷,本发明提供的基于图计算引擎的异步消息发送方法及系统,采用异步消息发送模式,减少了子图间的信息交换次数,节省了网络通信资源,提高了处理效率。

第一方面,本发明提供的一种基于图计算引擎的异步消息发送方法,包括:步骤S1,在各个子图中,将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点,直到满足预设条件;步骤S2,同步各个子图中所述下一顶点接收的消息;步骤S3,若未满足终止条件,则返回执行步骤S1。

优选地,所述在各个子图中,将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点,包括:若满足触发条件,则将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点。

优选地,所述若满足触发条件,则将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点,包括:若边被激活,将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点。

优选地,若边被激活,将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点,包括:若当前顶点接收到消息,则激活所述当前顶点;若所述当前顶点被激活,则按照边激活条件激活所述当前顶点相应的边;若所述当前顶点相应的边被激活,则将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点;将所述当前顶点的激活状态清零。

优选地,所述同步各个子图中所述下一顶点接收的消息,包括:在各个子图中,若所述下一顶点有主顶点索引,则根据下一顶点的主顶点索引,将所述下一顶点接收到的消息发送给所述下一顶点的主顶点;融合所述下一顶点的主顶点接收到的所有消息;根据所述下一顶点的主顶点的从顶点索引,将融合后的消息发送给所述下一顶点的所有从顶点。

优选地,还包括:根据所述融合后的消息更新所述下一顶点的主顶点的属性;根据所述下一顶点的主顶点的从顶点索引,将更新后的所述下一顶点的主顶点的属性发送给所述下一顶点的所有从顶点;根据更新后的所述下一顶点的主顶点的属性,更新所述下一顶点的从顶点的属性。

优选地,所述预设条件为没有产生新消息或迭代次数达到设定的阈值。

第二方面,本发明提供的一种基于图计算引擎的异步消息发送系统,包括:消息迭代模块,用于在各个子图中,将当前顶点接收到的消息按预定规则沿所述当前顶点的边发送给下一顶点,直到满足预设条件;消息同步模块,用于同步各个子图中所述下一顶点接收的消息;循环判断模块,用于若未满足终止条件,则返回执行消息迭代模块的功能。

优选地,所述消息同步模块具体用于:在各个子图中,若所述下一顶点有主顶点索引,则根据下一顶点的主顶点索引,将所述下一顶点接收到的消息发送给所述下一顶点的主顶点;融合所述下一顶点的主顶点接收到的所有消息;根据所述下一顶点的主顶点的从顶点索引,将融合后的消息发送给所述下一顶点的所有从顶点。

优选地,还包括属性更新模块,用于:根据所述融合后的消息更新所述下一顶点的主顶点的属性;根据所述下一顶点的主顶点的从顶点索引,将更新后的所述下一顶点的主顶点的属性发送给所述下一顶点的所有从顶点;根据更新后的所述下一顶点的主顶点的属性,更新所述下一顶点的从顶点的属性。

本发明提供的基于图计算引擎的异步消息发送方法及系统,在消息发送过程中,采用异步消息发送模式,减少了子图间的信息交换次数,节省了网络通信资源,提高了处理效率;另外,通过主顶点索引和从顶点索引快速查找到顶点在不同子图间的位置,不再需要计算,提高了不同子图间同步数据的效率。

附图说明

图1为一个完整的大图的示意图;

图2为将大图切分后的三个子图;

图3为本发明实施例所提供的基于图计算引擎的存储结构;

图4为本发明实施例所提供的基于图计算引擎的异步消息发送方法的流程图;

图5为本发明实施例所提供的基于图计算引擎的异步消息发送系统的结构框图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

为了提高子图之间的数据同步效率,本发明实施例提供了一种图数据的存储方法,包括:

按照顶点分割的方式将一个完整的大图切分为多个子图,其中,在每个子图中的边都是完整的,一个顶点可能存在于两个或两个以上的子图中;

对于存在两个或两个以上子图中的顶点,指定其中一个子图为该顶点的主子图,其余的子图为该顶点的从子图,在主子图中的该顶点就为主顶点,在从子图中的该顶点为从顶点。

根据预定的存储结构,保存每个子图中的顶点和边的数据。

图1给出了一个完整的大图。

沿着图1中的虚线进行切分就得到如图2所示的三个子图。其中,实线圈为主顶点(如子图0中的顶点a、b、c、d),虚线圈为从顶点(如子图0中的顶点g、f,子图1中的顶点c);以顶点c为例,顶点c在子图0中为主顶点,则子图0为顶点c的主子图,子图1和子图2为顶点c的从子图。

图3给出了按上述方式进行存储的存储结构。该存储结构中,每个子图是单独存储的,因此该存储结构适用于并行计算。每个子图中存储有3部分内容:

第一部分为ID映射。local2Global存储了子图内所有顶点在全局ID(顶点在大图中的ID),其中所有主顶点的索引号小于从顶点。global2Local存储了子图中每个顶点的全局ID的索引与本地ID(顶点在子图中的ID)的映射,以图3中的子图0(Partition0)为例,global2Local字段下,“231”为顶点a的全局ID,“0”为顶点a的本地ID。在一个子图中,如果主顶点和从顶点的数量分别为m和n,若一个顶点的本地ID小于m,则该顶点是主顶点,否则该顶点是从顶点。

第二部分为顶点信息(vertices)。attributesOfMaster用于存储主顶点的属性值,其排序与local2Global的顺序相同。slaveInfoOfMaster用于存储主顶点对应的从顶点索引,从顶点索引包括从顶点所在的子图编号和在子图中的本地ID,如果一个顶点被切分,将存在一个或多个从顶点分布在其他的子图中,例如,在子图0中的顶点891(即顶点c)有两个从顶点,在子图1和子图2中的本地ID分别为4和3(见子图1和子图2中的global2Local),因此在子图0中slaveInfoOfMaster相应的位置存储顶点891的从顶点索引“1,4”和“2,3”。attributesOfSlave用于存储从顶点的属性值。masterInfoOfSlave用于存储从顶点对应的主顶点索引,主顶点索引包括主顶点所在的子图编号和主顶点在子图中的本地ID,例如在子图0中,从顶点412(即顶点g)的主顶点在子图2中,其在子图2中的本地ID是0,因此在子图0中masterInfoOfSlave相应的位置存储顶点412的主顶点索引“2,0”。从顶点的属性可以根据主顶点的属性值进行更新。

第三部分为边信息(edges)。边的源点的本地ID存储在localSrcIds中,边的终点的本地ID存储在与localSrcIds对应的localDstIds中,以顶点231指向顶点2851的边为例,顶点231(本地ID为0)为源点,则localSrcIds(0)为0,顶点2851(本地ID为1)为终点,则localDstIds(0)为1。edgeAttributes存储边的属性值。

本发明实施例提供的基于图计算引擎的存储结构中包括点的包含关系(主顶点索引和从顶点索引),在查找过程中,可以通过索引快速查找到目标点,不再需要计算,提高了查找效率;另外,将点和边共同存储,一些共享的信息不需要重复存储,节省了存储空间。

本发明实施例提供的基于图计算引擎的存储结构中包括点的包含关系(主顶点索引和从订点索引),在查找过程中,可以通过索引快速查找到目标点,不再需要计算,提高了查找效率;另外,将点和边共同存储,一些共享的信息不需要重复存储,节省了存储空间。

基于上述图数据的存储结构,本发明实施例提供的一种基于图计算引擎的异步消息发送方法,具体步骤如图4所示,包括:

步骤S1,在各个子图中,将当前顶点接收到的消息按预定规则沿当前顶点的边发送给下一顶点,直到满足预设条件。

其中,消息从当前顶点发送到下一顶点为一次消息的迭代,若未满足预设条件则继续消息的迭代,上一次迭代过程中接收到消息在顶点即为下一次迭代过程中的当前顶点。

步骤S2,同步各个子图中下一顶点接收的消息。

其中,同步是指共享各个子图中的全局ID相同的顶点接收到的消息。

步骤S3,若未满足终止条件,则返回执行步骤S1。

其中,返回执行步骤S1即进行新一轮的循环发送,上一次循环发送过程中最终接收到消息的顶点即为下一次循环发送过程中步骤S1中起始的当前顶点。

本发明实施例提供的基于图计算引擎的异步消息发送方法,采用异步消息发送模式,减少了子图间的信息交换次数,节省了网络通信资源,提高了处理效率。

其中,步骤S1的实现方式有多种,本发明实施例提供了步骤S1的一种优选方式,具体包括:若满足触发条件,则将当前顶点接收到的消息按预定规则沿当前顶点的边发送给下一顶点。

进一步地,步骤S1的优选方式还可以是:若边被激活,将当前顶点接收到的消息按预定规则沿当前顶点的边发送给下一顶点。

进一步地,步骤S1的优选方式还可以是:若当前顶点接收到消息,则激活当前顶点;若当前顶点被激活,则按照边激活条件激活当前顶点相应的边;若当前顶点相应的边被激活,则将当前顶点接收到的消息按预定规则沿当前顶点的边发送给下一顶点;将当前顶点的激活状态清零。该优选方法,以顶点接收到消息为发送消息的触发条件,形成链式反应,更新消息会通过边自动传递到下一个顶点,直到满足终止条件,提高了信息发送效率。

其中,步骤S1中的预定规则包括以下规则中的任意一种:(1)消息只能从源点发给终点,(2)消息只能从终点发往源点,(3)消息既可以从源点发往终点也可以从终点发往源点。实际应用中,消息发送的方向可以根据用户的实际需求设定,如根据源点和终点的属性值、消息的具体内容判断选用哪种消息发送的规则。

其中,边被激活的条件包括边的源点被激活和/或边的终点被激活。

其中,步骤S1中的预设条件可由用户根据实际需求进行设定,优选为没有产生新消息和/或迭代次数达到设定的阈值。没有产生新消息是指消息没有沿着边发送,即没有顶点接收到消息。预设条件的设定可以控制消息在各个子图中迭代的时间。

步骤S2的实现方式有多种,本发明实施例提供的提供了步骤S2的优选方式,具体包括:在各个子图中,若下一顶点有主顶点索引,则根据下一顶点的主顶点索引,将下一顶点接收到的消息发送给下一顶点的主顶点;融合下一顶点的主顶点接收到的所有消息;根据下一顶点的主顶点的从顶点索引,将融合后的消息发送给下一顶点的所有从顶点。

其中,若下一顶点没有主顶点索引,则表明该顶点就是主顶点,该顶点只需接收其从顶点发送过来的消息即可。

本发明实施例的方法还包括对顶点属性的更新,具体步骤包括:根据融合后的消息更新下一顶点的主顶点的属性;根据下一顶点的主顶点的从顶点索引,将更新后的下一顶点的主顶点的属性发送给下一顶点的所有从顶点;根据更新后的下一顶点的主顶点的属性,更新下一顶点的从顶点的属性。通过从顶点索引快速查到到主顶点对应的所有从顶点的位置,不再需要计算,提高了不同子图间同步数据的效率。

其中,步骤S3中的终止条件可由用户根据实际需求设定,优选为没有产生新消息和/或迭循环发送次数达到一定数量。没有产生新消息是指消息没有沿着边发送,即没有顶点接收到消息。

本发明实施例提供的基于图计算引擎的异步消息发送方法,在消息发送过程中,采用异步消息发送模式,减少了子图间的信息交换次数,节省了网络通信资源,提高了处理效率;另外,通过主顶点索引和从顶点索引快速查找到顶点在不同子图间的位置,不再需要计算,提高了不同子图间同步数据的效率。

基于与上述基于图计算引擎的异步消息发送方法相同的发明构思,本发明实施例提供了一种基于图计算引擎的异步消息发送系统,如图5所示,包括:消息迭代模块101,用于在各个子图中,将当前顶点接收到的消息按预定规则沿当前顶点的边发送给下一顶点,直到满足预设条件;消息同步模块102,用于同步各个子图中下一顶点接收的消息;循环判断模块103,用于若未满足终止条件,则返回执行消息迭代模块的功能。

其中,消息同步模块102具体用于:在各个子图中,若下一顶点有主顶点索引,则根据下一顶点的主顶点索引,将下一顶点接收到的消息发送给下一顶点的主顶点;融合下一顶点的主顶点接收到的所有消息;根据下一顶点的主顶点的从顶点索引,将融合后的消息发送给下一顶点的所有从顶点。

其中,还包括属性更新模块,用于:根据融合后的消息更新下一顶点的主顶点的属性;根据下一顶点的主顶点的从顶点索引,将更新后的下一顶点的主顶点的属性发送给下一顶点的所有从顶点;根据更新后的下一顶点的主顶点的属性,更新下一顶点的从顶点的属性。

本发明实施例提供的基于图计算引擎的异步消息发送系统,在消息发送过程中,采用异步消息发送模式,减少了子图间的信息交换次数,节省了网络通信资源,提高了处理效率;另外,通过主顶点索引和从顶点索引快速查找到顶点在不同子图间的位置,不再需要计算,提高了不同子图间同步数据的效率。

采用四个真实的大图形数据,对本发明实施例提供的基于图计算引擎的异步消息发送方法及系统进行绩效评价。如表1所示,这四个大图形数据分别为:(1)社交网络:soc-Epinisons1;(2)通信网络:wiki-Talk;(3)互联网对等网络:p2p-Gnutella31;(4)道路网络:roadNet-PA。所有的实验都是在包含三台服务器的Spark集群上进行的,每台服务器包括16个处理器(两个英特尔至强e5620CPU)和32GB的RAM。

表1

实验结果如表2所示,Grapha栏的数据为运用本发明的方法得到的实验数据,GraphX栏的数据为运用基于现有的GraphX得到的实验数据。表2给出了针对四种图,得到的图加载时间(load)和算法计算时间(compution)。从表2中可以看到本发明的方法需要更多的时间来从HDFS文件加载图形数据。但是一旦数据加载完毕后,本发明的方法的计算速度显然更胜一筹。特别是大直径的roadNet-PA,GraphX在经过430s后计算失败,而通过本发明的方法可以成功计算出最后的结果,并且仅用了47.5s。

表2

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1