一种基于消息再生机制的图计算容错方法及系统的制作方法

文档序号:6539942阅读:173来源:国知局
一种基于消息再生机制的图计算容错方法及系统的制作方法
【专利摘要】本发明涉及一种基于消息再生机制的图计算容错方法及系统。该方法在图计算过程中,对于图结构数据保存相邻两个快照之间图结构的变化信息,对于消息数据保存顶点值集合;当出现失效时,利用保存的所述图结构的变化信息和所述顶点值集合,将图计算系统恢复到之前有效的快照对应的超步(Superstep),然后开始下一超步的计算。该系统包括一个控制节点、多个计算节点和分布式文件系统。为了能够更好地适应图计算系统的失效情况,本发明能够实现快照数据的轻量化,大大缩短快照的生成和恢复时间,提高图计算系统的容错能力。
【专利说明】一种基于消息再生机制的图计算容错方法及系统
【技术领域】
[0001]本发明属于云计算领域,具体涉及一种用于图计算系统的基于消息再生机制的高效容错方法及系统。
【背景技术】
[0002]图计算系统正在越来越广泛地被各类企业运用于日常的数据分析和计算中。在开源界涌现出了许多开源的图计算框架,如Apache Giraph、PowerGraph等。这些图计算系统框架受到Pregel的启发,均采用了基于顶点的语义模型和BSP (Bulk SynchronousParallel)计算模型,从分布式存储系统中读入图数据,在内存中进行迭代计算,最后将计算结果输出到数据库或文件系统中。
[0003]—个图计算任务被划分成若干个超步(Super step ),在每个超步中,每个顶点将处理来自邻居顶点上一个Superstep发来的消息,并根据具体的运算逻辑向周围顶点发送消息供下一个Superst印使用。这种基于消息的顶点间通讯机制使得该计算框架可以将顶点很容易地划分在多个机器中,从而达到分布式和并行计算的目的。
[0004]作为一个分布式计算框架,容错是非常必要的。传统的MapReduce计算框架往往采用将子任务重算方法,这是因为每个计算任务的子任务具有如下特性:
[0005]1.子任务是没有状态的,所有计算所需数据都可以从文件系统中获得;
[0006]2.子任务之间没有任何依赖或通信。
[0007]而对于图计算系统来说,这样两个特性并不存在:
[0008]1.子任务是有状态的:图的结构数据和顶点状态都保存在内存中,且无法从文件系统中获得;
[0009]2.子任务之间有大量的消息交换,每台机器上的子任务缓存了来自其他机器上一个Superstep的消息数据。
[0010]这使得图计算系统无法使用MapReduce的子任务重算方法。在现有的开源实现中,往往使用Checkpoint (快照)机制,即在每一个Superstep结束后,将图的结构数据、顶点状态和本轮接收供下一个Superstep使用的消息整体保存到分布式文件系统上作为一个快照。当出现失效时,所有节点放弃当前的计算状态和中间数据,从文件系统中重新读入最近一个快照。该方法虽然实现起来很简单,但其网络和磁盘开销都非常大,严重拖慢计算速度,因此在实际应用中往往关闭此功能。

【发明内容】

[0011]为了能够更好地适应图计算系统的失效情况,本发明提出一种用于图计算系统的基于消息再生机制的高效容错方法,及采用该方法的图计算系统,能够实现快照数据的轻量化,大大缩短快照的生成和恢复时间,提高图计算系统的容错能力。
[0012]为实现上述目的,本发明采用的技术方案如下:
[0013]一种基于消息再生机制的图计算容错方法,其步骤包括:[0014]I)在图计算过程中,对于图结构数据保存相邻两个快照之间图结构的变化信息,对于消息数据保存顶点值集合;
[0015]2)当出现失效时,利用保存的所述图结构的变化信息和所述顶点值集合,将图计算系统恢复到之前有效的快照对应的超步(Superstep),然后开始下一超步的计算。
[0016]进一步地,步骤2)所述之前有效的快照为失效之前任意一个有效的快照,优选为失效之前最后一个有效的快照。
[0017]进一步地,步骤I)在Superstep k结束时的快照生成过程如下:
[0018]a)储存相对于上一个快照的图变化信息Alri,k ;
[0019]b)储存所有顶点的值,形成顶点值集合Vk。
[0020]进一步地,设Auj为第j个Superstep相对于第i个Superstep的变化增量,Gk为恢复到第k个Superst印时所需要读取的图结构数据快照,则步骤2)中当出现失效时恢复到Superstep k时的状态的过程如下:
[0021]a)依次读取 G Λ μ Λ"...Λ k_2, H,获得 Glrl ;
[0022]b)读取顶点值集合Vk,根据Vk恢复出消息集合Mk ;
[0023]c)读取 Λ H,,,形成 Glri Λη,, = Gk。
[0024]一种采用上述方法的图计算系统,包括一个控制节点、多个计算节点和分布式文件系统,其中,控制节点负责向计算节点分发计算任务,在计算节点间同步,探测计算节点的失效情况,同时控制计算过程的进行;计算节点负责具体任务的计算工作,每个计算节点的内存中保存一个图的部分顶点及其与其他顶点的联接情况;分布式文件系统负责存储图的静态信息和运行过程中的快照数据,包括相邻两个快照之间图结构的变化信息和消息数据的顶点值集合;当控制节点探测到计算节点失效时,控制计算节点恢复到之前有效的状态。
[0025]本发明的基于消息再生机制的图计算容错方法,通过基于图结构数据增量快照和消息数据再生机制,实现了一种轻量级快照及其恢复方法,大大减少了快照生成和恢复时所需的数据量,从而降低了网络带宽和磁盘要求,提高了故障恢复效率,是一个精确、细致的方法,实现复杂度低,易于维护,具有较高的实用价值。
【专利附图】

【附图说明】
[0026]图1是PageRank算法实现及其regenerate函数图。
[0027]图2是SSSP算法实现及其regenerate函数图。
[0028]图3是图计算系统结构示意图。
[0029]图4是Giraph系统和本发明系统的计算和快照时间对比图。
[0030]图5是Giraph系统和本发明系统的Κ-Core任务的Checkpoint大小对比图。
[0031]图6是Giraph系统和本发明系统的PageRank恢复时间对比图。
【具体实施方式】
[0032]下面通过具体实施例和附图,对本发明做进一步说明。
[0033]传统的快照数据包括两部分:a)图结构数据快照;b)缓存的供下一个Superst印使用的消息数据快照。本发明分别通过两种不同的方法减小这两部分的数据体积,通过图结构数据增量快照和消息数据再生机制,实现快照数据的轻量化,达到快速生成和恢复的目的,大大缩短了快照的生成和恢复时间。
[0034]1.增量图结构数据快照
[0035]对于图结构数据,相对于传统的快照全部图结构数据的方法,本发明使用增量式快照,即采用基于日志追加的方法保存两个快照之间图结构的变化。形式化地,设八“为第i个Superstep相对于第i个Superstep的变化增量,则第k个Superstep结束时保存的数据为如果需要恢复到第X个Superstep,其所需要读取的图结构数据快照为:
[0036]Gx = GAoa Δ 1>2...Δ ,其中Gx表示第x个超步结束时的图结构数据,G表示原始图结构数据。
[0037]2.基于消息数据再生机制的消息快照
[0038]设Superstepk产生的消息集合为Mk,所有顶点值集合为Vk。对于消息数据,相对于传统的保存全部Mk的方法,本发明只保存顶点值集\,恢复时则通过顶点值直接恢复出该节点在该Superstep发送的消息。
[0039]设每个顶点的平均度数为β,则Vk的快照大小为Mk的I/ β。由于计算模型不同,本发明增强了计算模型语义,向上层应用暴露恢复接口,由程序员自行确定如何通过顶点的值恢复出该Superstep发送的消息。其典型的程序接口为:
[0040]void regenerate (T value),其中 T value 是当前顶点在 Superstep k 结束时的值。
[0041]在恢复过程中,系统会对每个顶点调用regenerate函数,恢复出从该顶点发出的消息。经过测试,绝大部分运行于图计算平台上的算法都适用于此接口。作为实例,图1和图2分别给出了两个典型算法Pag`eRank和SSSP (单源最短路径)的算法实现及其相应的regenerate 函数。
[0042]3.快照过程
[0043]在Superstep k结束时,其快照生成过程如下:
[0044]a)储存相对于上一个快照的图变化信息;
[0045]b)储存所有顶点的值,形成Vk。
[0046]4.恢复过程
[0047]当出现失效时,若想恢复到Superstep k时的状态,贝U过程如下:
[0048]a)依次读取 GAoaA 1>2...Δ 卜出,获得 Gk^1
[0049]b)读取Vk,根据Vk对于每个顶点调用regenerate函数,恢复出Mk ;
[0050]c)读取 Ak-1k,形成 Glrf Ak-1k = Gk。
[0051]通过以上步骤,可以将图计算系统的状态恢复到Superstepk,此时恢复过程完成,可以开始下一步计算。
[0052]以下详细介绍针对本发明方法所进行的实验。该实验完整地实现了图计算系统及前文所述的快照和恢复方法,并使用真实图数据和常见图算法作为任务负载,模拟系统失效的情形,并与传统快照恢复方法比较,以此测量该方法的性能和有效性。
[0053]1.实施步骤
[0054]I)首先实现所需的计算系统框架,其系统结构如图3所示:
[0055]该系统包含一个控制节点和多个计算节点。其中,控制节点负责向计算节点分发计算任务,在计算节点间同步,探测计算节点的失效情况,同时控制计算过程的进行;计算节点则负责具体任务的计算工作,每个计算节点的内存中保存了一个图的部分顶点及其与其他顶点的联接情况。节点间使用与Giraph类似的Apache MINA通信框架进行消息通信。分布式文件系统则负责存储图的静态信息和运行过程中的快照数据。
[0056]2)启动系统,并向系统分配计算任务,计算节点将图结构数据从分布式文件系统中读入,并在控制节点的协调下开始计算。每个Superstep结束后,计算节点将把快照数据持久化到分布式文件系统中。
[0057]3)当控制节点探测到计算节点失效时,会控制计算节点进行如下操作:
[0058]a)终止当前Superstep的计算,进行资源清理,进入恢复模式;
[0059]b)寻找最后一个有效的快照k,并从文件系统中读入Glri ;
[0060]c)读取Vk,对图上每一个顶点调用regenerate函数恢复出Mk,在不同计算节点间消息交换;
[0061 ] d)读取 Λ η, k,形成 Glri Δ ^lj k = Gk ;
[0062]e)退出恢复模式,开始Superstep k+1的计算。
[0063]2.实施效果
[0064]针对该算法进行实验,实验使用16台服务器,每台服务器配置为12核AMD0pteron4180和48G内存,用千兆网络相连。实验所用的图数据为某社交网络2009年的局部关系数据,共2500万顶点,约15亿条边,平均度数约为60。为了兼容性的考虑,底层的分布式文件系统采用HDFS1.1.0,并使用当前流行的Apache Giraphl.0.0作为性能对照。
[0065]实验采用5个图计算领域的典`型算法做为负载:RandomWalk,SSSP, WCC, K-Core和PageRank,并根据本方法的需求针对每个算法实现了相应的regenerate函数。所有系统和算法均使用Javal.7实现。
[0066]图4展示了 Giraph系统和本发明的实验系统在几个典型任务下的计算和Checkpoint时间。由于数据集和算法实现基本相同,两个系统的计算时间基本一致,但由于本方法中轻量快照的加入,使得实验系统的快照创建时间大大缩短,整体运行时间加快。
[0067]图5展示了 Giraph系统和本发明的实验系统在运行K-Core任务时快照文件伴随任务运行的累积大小,其中Giraph系统每5个Superstep进行一次快照,而本发明的试验系统每个Superstep均进行一次快照。可以看到轻量快照的文件体积远远小于传统快照体积。
[0068]在恢复时间上,使用PageRank作为典型负载进行实验,并人为在第9个Superstep引入了失效,如图6所示,可以看出得益于消息数据的再生机制,本发明的实验系统故障后需要读入的数据量较小,恢复速度要远快于Giraph系统。
[0069]以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
【权利要求】
1.一种基于消息再生机制的图计算容错方法,其步骤包括: 1)在图计算过程中,对于图结构数据保存相邻两个快照之间图结构的变化信息,对于消息数据保存顶点值集合; 2)当出现失效时,利用保存的所述图结构的变化信息和所述顶点值集合,将图计算系统恢复到之前有效的快照对应的超步,然后开始下一超步的计算。
2.如权利要求1所述的方法,其特征在于:步骤2)所述之前有效的快照为失效之前最后一个有效的快照。
3.如权利要求1所述的方法,其特征在于,步骤I)在第k个超步结束时的快照生成过程如下: a)储存相对于上一个快照的图变化信息A1^k; b)储存所有顶点的值,形成顶点值集合Vk。
4.如权利要求3所述的方法,其特征在于,设为第j个超步相对于第i个超步的变化增量,G表示原始图结构数据,Gk为表示第k个超步结束时的图结构数据,则步骤2)中当出现失效时恢复到第k个超步时的状态的过程如下: a)依次读取G Λ Λ lj2...Δ km,获得 Glri ; b)读取顶点值集合根据Vk恢复出消息集合Mk;
c)读取八,_1,,,形成61;_1八1;_1,1;= 61;。
5.如权利要求4所述的方法,其特征在于,步骤b)根据Vk恢复出消息集合Mk所采用的程序接口为:void regenerate (T value),其中T value是当前顶点在Superstep k结束时的值。
6.一种采用权利要求1所述方法的图计算系统,其特征在于,包括一个控制节点、多个计算节点和分布式文件系统,其中,控制节点负责向计算节点分发计算任务,在计算节点间同步,探测计算节点的失效情况,同时控制计算过程的进行;计算节点负责具体任务的计算工作,每个计算节点的内存中保存一个图的部分顶点及其与其他顶点的联接情况;分布式文件系统负责存储图的静态信息和运行过程中的快照数据,包括相邻两个快照之间图结构的变化信息和消息数据的顶点值集合;当控制节点探测到计算节点失效时,控制计算节点恢复到之前有效的状态。
7.如权利要求6所述的系统,其特征在于:当控制节点探测到计算节点失效时,控制计算节点进行如下操作: a)终止当前超步的计算,进行资源清理,进入恢复模式; b)寻找失效之前有效的快照k,并从文件系统中读入Glri; c)读取Vk,根据Vk恢复出Mk,在不同计算节点间消息交换;
d)读取Δ H,k,形成 Glri Ak_ljk = Gk ; e)退出恢复模式,开始第k+Ι个超步的计算。
8.如权利要求7所述的系统,其特征在于:步骤b)所述失效之前有效的快照k为失效之前最后一个有效的快照。
9.如权利要求6所述 的系 统,其特征在于:各节点间使用ApacheMINA通信框架进行消息通/[目O
【文档编号】G06F11/14GK103885856SQ201410085478
【公开日】2014年6月25日 申请日期:2014年3月10日 优先权日:2014年3月10日
【发明者】薛继龙, 曲直, 杨智, 代亚非 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1