一种基于状态更新传播的流式图计算方法及系统技术方案

技术编号:19822057 阅读:54 留言:0更新日期:2018-12-19 14:48
本发明专利技术涉及一种基于状态更新传播的流式图计算方法及系统,基于状态更新传播的流式图计算模型,能够在原有图状态基础上,并发计算增量信息的影响,而无需在整个图上重新计算;同时通过细粒度分布式锁,实现状态的并发更新,保证计算结果的正确性。通过真实的数据集对本发明专利技术进行实时性和准确性测试,结果表明基于状态更新传播的流式图计算模型构建的算法能够得到较为准确的计算结果,计算偏差在1%以内;90%的图数据更新请求都能够在12ms内得到响应,符合实时性要求;任意两个计算节点更新冲突的概率在3%以内,可以满足高并发的需求。

【技术实现步骤摘要】
一种基于状态更新传播的流式图计算方法及系统
本专利技术涉及一种流式图计算方法及系统,尤其涉及一种基于状态更新传播的流式图计算方法及系统,使用增量式方法进行更新,属于软件

技术介绍
图数据是计算机科学中常用的一类数据结构,它很好地表达了数据之间的关联性。现实世界中有很多数据都可以抽象成图数据,例如Web网页之间的链接、社交人物之间的互动以及买卖双方的交易都可以抽象成彼此关联而形成的图。而随着互联网的快速发展,图数据的总量也在急剧增加。如截至2016年第四季度,Facebook包含了18.6亿个活跃用户,每个用户平均好友155个;Web链接中图顶点数达到T级,边的个数达到P级(https://www.statista.com/topics/751/facebook/)。因为图数据能够很好地表达数据之间的关联性和聚集情况,因此针对图数据可以挖掘出很多有用信息。例如,通过为购物者之间的关系建模,能很快找到口味相似的用户,并为之推荐商品;在社交网络中,通过传播关系发现意见领袖。图算法及相关的处理框架已经广泛运用在社交分析、商品推荐、舆论监测、欺诈检测等各个领域。处理这些海量动态的图数据也对现有的图计算模型提出了挑战。一方面,这种超大规模的图数据很难一次性的全部导入内存中进行处理,即使能够借助外存一批一批地处理图数据,这也使得计算延迟显著增加;另一方面,这些图数据是动态变化、实时更新的,现有的图计算模型需要在这种动态的数据集上进行增量计算。现有的成熟的图计算系统如GooglePregel(MalewiczG,AusternMH,BikAJC,etal.Pregel:asystemforlarge-scalegraphprocessing[C]//ProceedingsoftheACMSIGMODInternationalConferenceonManagementofdata.ACM,2010:135-146.),SparkGraphX(XinRS,GonzalezJE,FranklinMJ,etal.Graphx:Aresilientdistributedgraphsystemonspark[C]//FirstInternationalWorkshoponGraphDataManagementExperiencesandSystems.ACM,2013:2.),这些图计算框架都采用了BSP(BulkSynchronizedParallel)(ValiantLG.Abridgingmodelforparallelcomputation[J].CommunicationsoftheACM,1990,33(8):103-111.)模型来处理图数据。然而这些系统都是在静态的图数据上进行的离线批量处理,即每次针对整体的图进行计算,当图发生变化时,需要在变化后的整个图上重新计算一遍。这使得用户等待周期长,无法满足实时计算的要求,也浪费了系统资源(申林,薛继龙,曲直,杨智,代亚非.IncGraph:支持实时计算的大规模增量图处理系统[J].计算机科学与探索,2013,12:1083-1092.)。因此针对图数据不断变化的情况,现有工作提出了很多在动态图上直接进行计算的方法。针对这类动态图计算的问题,大致可以分为两类:估计计算和准确计算。对于估计计算,大部分的算法是希望通过采样来降低时间和空间开销,并通过特定的采样方法来减少和真实值之间的差距。如Bar-YossefZ(Bar-YossefZ,KumarR,SivakumarD.Reductionsinstreamingalgorithms,withanapplicationtocountingtrianglesingraphs[C]//ProceedingsofthethirteenthannualACM-SIAMsymposiumonDiscretealgorithms.SocietyforIndustrialandAppliedMathematics,2002:623-632.)等人研究了在流图上如何通过设计采样规则来估计图中三角形数目;S.Baswana(BaswanaS.Streamingalgorithmforgraphspanners—singlepassandconstantprocessingtimeperedge[J].InformationProcessingLetters,2008,106(3):110-114.)等人通过将原始的图数据转化为简单的数据结构来保存图中元素,从而降低了内存消耗。对于准确计算,现有的KineoGraph(ChengR,HongJ,KyrolaA,etal.Kineograph:takingthepulseofafast-changingandconnectedworld[C]//Proceedingsofthe7thACMeuropeanconferenceonComputerSystems.ACM,2012:85-98.)和IncGraph提出采用增量计算模型来进行实时计算,然而这种增量式的更新是串行执行的,实时性有限。SpecGraph(景年强,薛继龙,曲直,杨智,代亚非.SpecGraph:基于并发更新的分布式实时图计算模型[J].计算机研究与发展,2014,(S1):155-160.)虽然在上述增量模型的基础上有所改进,提出了基于推测机制的并发更新模型,然而该模型假设顶点的状态只依赖于顶点当前接收的信息,而与顶点之前的旧状态无关,这种假设使得系统的适用性差,很多算法中顶点的状态不仅跟顶点接收消息有关,还跟顶点的旧状态有关,因此模型的表达能力有限。总之,现有技术存在实时性有限、系统适用性差、模型表达能力有限的问题。
技术实现思路
本专利技术技术解决问题:克服现有技术的不足,提供一种基于状态更新传播的流式图计算方法及系统,能够在原有图状态基础上,并发计算增量信息的影响,而无需在整个图上重新计算;同时通过细粒度分布式锁,实现状态的并发更新,保证计算结果的正确性。本专利技术技术解决方案:一种基于状态更新传播的流式图计算方法,包括以下步骤:步骤一:挑选流式化处理的图算法;步骤二:针对步骤一中的流式化处理的图算法,构建基于状态更新传播的流式图计算模型;步骤三:利用步骤二构建的基于状态更新传播的流式图计算模型,对步骤(1)中选取的流式化处理的图算法进行基于细粒度分布式锁的状态更新,实现流式图计算的并行化;步骤四:对步骤三中的流式图计算进行并行化后,进行多维度测试,验证基于状态更新传播的流式图计算方法的可行性。所述步骤一中,挑选流式化处理的图算法实现过程如下:(1)对流式场景下的图算法从五个方面进行特征分析,所述五个方面包括影响范围、计算方法、计算顺序、计算特性和计算次数,得到分析结果;(2)根据步骤(1)中的分析结果,判断流式场景下的图算法是否满足以下三个特点:即计算方法采用增量计算形式、计算顺序满足序列一致性、计算性质满足代数运算的交换律和结合律;(3)挑选出的同时满足上述三个特点的流式场景下的图算法,对算法进行流式化。所述步骤二中,基于状态更新传播的流式图计算模型包括三个组件:状态、事件和转换;图4所示为基于状态更新传播本文档来自技高网
...

【技术保护点】
1.一种基于状态更新传播的流式图计算方法,其特征在于,包括以下步骤:步骤一:挑选流式化处理的图算法;步骤二:针对步骤一中的流式化处理的图算法,构建基于状态更新传播的流式图计算模型;步骤三:利用步骤二构建的基于状态更新传播的流式图计算模型,对步骤(1)中选取的流式化处理的图算法进行基于细粒度分布式锁的状态更新,实现流式图计算的并行化;步骤四:对步骤三中的流式图计算进行并行化后,进行多维度测试,验证基于状态更新传播的流式图计算方法的可行性。

【技术特征摘要】
1.一种基于状态更新传播的流式图计算方法,其特征在于,包括以下步骤:步骤一:挑选流式化处理的图算法;步骤二:针对步骤一中的流式化处理的图算法,构建基于状态更新传播的流式图计算模型;步骤三:利用步骤二构建的基于状态更新传播的流式图计算模型,对步骤(1)中选取的流式化处理的图算法进行基于细粒度分布式锁的状态更新,实现流式图计算的并行化;步骤四:对步骤三中的流式图计算进行并行化后,进行多维度测试,验证基于状态更新传播的流式图计算方法的可行性。2.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤一中,挑选流式化处理的图算法实现过程如下:(1)对流式场景下的图算法从五个方面进行特征分析,所述五个方面包括影响范围、计算方法、计算顺序、计算特性和计算次数,得到分析结果;(2)根据步骤(1)中的分析结果,判断流式场景下的图算法是否满足以下三个特点:计算方法采用增量计算形式、计算顺序满足序列一致性、计算性质满足代数运算的交换律和结合律;(3)挑选出的同时满足上述三个特点的流式场景下的图算法进行流式化。3.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤二中,基于状态更新传播的流式图计算模型包括三个组件:状态、事件和转换;所述状态(State),反映静态图数据当前的特征信息,所述特征信息以顶点为单位进行体现,也可以由用户自定义的特征信息来体现;所述基于状态更新传播的流式图计算方法将状态抽象成一个接口,该接口对整个图或者单个图中节点的状态进行更改或获取,同时传播图中节点的状态到其邻接点;用户扩展该接口来实现更加复杂的状态信息管理;所述事件(Event),事件触发图由T1时刻的State1转换为T2时刻的State2,事件是由事件值(EventValue)和事件类型(EventType)组成;所述事件的值分为两种:其中一种事件由顶点编号和顶点的值组成,另一种事件由边起点、边终点以及边值组成;所述事件的类型分为三种:新增(ADD)、删除(DELETE)和更新(UPDATE);两种事件的值和三种事件的类型组合出6种事件:新增边,删除边,更新边;新增顶点,删除顶点,更新顶点;所述6种事件基本涵盖了所有的图变化的情形;由事件抽象成的接口可以获取指定事件的值和类型;所述转换(Transform)是由事件触发的图的更新过程,即图是如何根据相应的事件来由State1转换成State2;转换函数是动态图计算模型中的计算逻辑,详细定义了图如何根据到达的事件,从一个状态转变成另外一个状态,称之为状态更新的图计算模型的驱动程序,驱动图从一系列的事件流转换成一系列对应的状态流;由状态抽象成接口根据事件转换静态图数据的状态。4.根据权利要求1所述的基于状态更新传播的流式图计算方法,其特征在于:所述步骤三中,基于细粒度分布式锁的状态更新方法实现步骤如下:(1)根据不同的流式场景下的图算法,将用户关心的静态图数据的特征信息抽象成与当前静态图数据对应的特定的状态,这些状态以顶点为单位进行保存,或以边或者以顶点和边混合的方式来组织,所述状态是高度能够自定义,利用开源的分布式内存数据网格Hazelcast来作为存储层,在各个计算节点上存储静态图数据的状态信息;(2)在(1)中将静态图数据抽象成状态信息后,开始接收事件流,将事件流按照某种分片规则,即动态图数据的哈希划分算法分发到不同的计算节点上;(3)分别在各个计算节点上独立进行状态更新;根据流式场景下图算法的影响范围和计算次数的不同,将静态图数据的状态更新的问题域划分成独立状态和关联状态两种问题;对于独立状态,图2所示为独立状态的存储和更新过程图,因为状态内的各个图节点之间不会相互影响,因此独立状态并发地更新,即按照状态的组织形式,将静态图数据的状态分布式地存储在多个计算节点上,而且...

【专利技术属性】
技术研发人员:许利杰黄涛魏峻王伟郑莹莹康锴
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1