一种面向收敛型图应用的GraphX数据缓存方法技术

技术编号:24574829 阅读:38 留言:0更新日期:2020-06-21 00:13
本发明专利技术公开了一种面向收敛型图应用的GraphX数据缓存方法,分为9个步骤:初始化、顶点计算与标识更新,活跃顶点信息收集、过滤时机判断、顶点属性同步、顶点活跃状态同步、过期数据过滤、判断迭代计算是否结束和结束。本发明专利技术针对图中边规模远大于顶点规模的特点,着眼于边数据的缓存优化,将应用运行过程中不再使用的边定义为过期数据,通过以顶点为中心的间接标识方法,标识应用运行过程中的过期数据。本发明专利技术设计基于活跃顶点规模变化趋势的数据过滤方法,当活跃顶点规模显著减小时,进行过期数据的过滤,降低数据过滤的性能开销,同时保障应用在内存配置受限的情况下,系统能将计算所需的图数据完整缓存于内存空间,提升应用的执行效率。

A graphx data caching method for convergent graph applications

【技术实现步骤摘要】
一种面向收敛型图应用的GraphX数据缓存方法
本专利技术属于分布式图计算领域,具体涉及分布式内存图计算系统的缓存优化技术。
技术介绍
GraphX是图计算领域被广泛使用的分布式图处理系统。GraphX构建于分布式计算引擎Spark之上,通过利用Spark提供的丰富的数据操作算子和计算引擎,获得较好的图数据计算效率。GraphX借助Spark弹性分布式数据集RDD进行大规模图数据的表达,将图中顶点与边表达为VertexRDD与EdgeRDD,降低用户的操作门槛。GraphX利用Spark的数据操作算子作用于VertexRDD与EdgeRDD上来执行迭代图处理操作,并利用Spark提供的基于内存的数据缓存方法,将待处理的图数据完全缓存于内存中,以加速数据处理。在大规模图处理中,收敛型图应用是一类典型图分析应用,其特点是在图数据迭代处理过程中,迭代轮次间活跃的图顶点规模呈现逐渐缩小的趋势,且任意顶点一旦从活跃状态转为非活跃状态,则保持非活跃状态直至应用结束。收敛型图应用广泛存在,如单源最短路径SSSP、宽度优先遍历BFS、deltaPageRank等。然而,GraphX在处理收敛型图应用时会出现如下问题:既有GraphX采用静态的数据缓存方法,即在每轮迭代处理时将图数据完整地缓存于内存中,并未考虑实际参与计算的数据规模。这使得收敛型图应用在GraphX系统中运行时,缓存中存在非活跃顶点数据以及大量与之关联的、不再参与计算的边数据,降低了缓存空间的有效利用率。同时在应用内存配置受限的情况下,系统无法完整缓存图数据,将数据以分区为单位进行丢弃,在计算时需根据RDD的血缘技术进行数据恢复。数据恢复会造成分区数据重计算现象的发生,增加处理开销,大大降低了收敛型图应用的执行效率。
技术实现思路
针对上述问题,本专利技术设计一种面向收敛型图应用的GraphX数据缓存方法。针对图数据边规模远大于顶点规模的特点,本方法着眼于图边数据的缓存优化,将收敛型图应用运行过程中不再使用的边数据定义为过期数据。本方法在实时监测过期数据的基础上,通过以顶点为中心的间接标识方法,标识应用运行过程中的过期数据,并设计基于活跃顶点规模变化趋势的过期数据过滤方法,当活跃顶点规模显著减小时,进行过期数据的过滤,降低图数据过滤的性能开销。本专利技术所述的数据缓存方法分为9个步骤:初始化、顶点计算与标识更新,活跃顶点信息收集、过滤时机判断、顶点属性同步、顶点活跃状态同步、过期数据过滤、判断迭代计算是否结束和结束。在本数据缓存方法中,有3个基本参数:活跃顶点信息收集周期阈值K、收敛程度下限区间Min、收敛程度上限区间Max。K一般取值在3~5之间,Min一般取值在0.25~0.5之间,Max一般取值在0.75~0.85之间。在执行本方法前,系统需对图数据进行预处理操作,即将图数据加载、划分、格式化操作形成顶点集合VertexRDD和边集合EdgeRDD。VertexRDD与EdgeRDD内部由VertexPartition顶点分区与EdgePartition边分区构成,分别存储顶点数据与边数据,分布在各任务执行器内。每个VertexPartition顶点分区中除了存储顶点数据外,还额外存储RoutingTable路由表信息,即顶点对应边所属的分区信息,用于建立顶点与边分区的映射关系。同时,VertexRDD与EdgeRDD内部均存储分区器Partitioner,记录了VertexRDD与EdgeRDD的数据分区策略。上述步骤在计算机上按以下步骤实现:(1)初始化:根据应用的初始化消息为以及具体的操作语义,对图数据进行初始化操作。系统遍历VertexRDD中每个顶点分区的顶点,将应用的初始化消息和具体的处理语义作用于顶点上,初始化顶点属性。初始化的顶点属性具体值依赖于具体的收敛型图应用。将参与第1轮迭代计算的顶点的状态初始化为活跃状态。同时根据顶点状态是否为活跃,初始化顶点标识,将活跃顶点的标识初始化为0,其他的顶点初始化为-1。然后,将顶点的属性值与活跃状态同步到EdgeRDD中以完成初始化。(2)顶点计算与标识更新2.1)遍历EdgeRDD每个边分区中包含活跃顶点的边数据,执行用户定义的SendMsg()消息发送函数与MergeMsg()消息聚合函数,进行消息的发送与消息的本地聚合,形成局部消息LocalMessage,LocalMessage可表示为RDD[(vid,msg)],(vid,msg)二元组为局部消息内部数据的具体展现形式,其中vid为顶点ID,msg为计算所产生的消息。2.2)LocalMessage利用VertexRDD的分区器进行数据重分区操作,然后与VertexRDD进行连接操作,遍历LocalMessage中每条记录,执行用户定义的MergeMsg()消息聚合函数进行消息聚合以及顶点标注。消息聚合以及顶点标注操作使每个接收到消息的顶点仅存储一条消息,仅产生一个标识。若迭代轮次为iter,标识方法将收到消息的顶点标注为iter+1,与消息一同存储于MessageRDD中。MessageRDD类型为VertexRDD,内部存储顶点接收到的消息以及顶点标识。2.3)VertexRDD与MessageRDD进行连接操作,遍历顶点分区中的每个顶点,执行用户定义vPorg()顶点计算函数,完成应用的计算。同时,比较VertexRDD中顶点v的标识flag1与MessageRDD中顶点v的标识flag2,若flag1小于flag2则将flag1更新为flag2。顶点计算与标识更新完成后,形成新的VertexRDD并缓存于内存中。(3)活跃顶点信息收集3.1)定义长度为K的队列ActiveVQueue用于存储最近K轮迭代活跃顶点的规模信息。K为活跃顶点信息收集周期阈值,由用户设定。K值不宜过大,否则体现不出活跃顶点规模的变化趋势,也不宜过小,否则体现出来的活跃顶点规模的变化趋势具有随机性,不准确。K一般取值在3~5之间。3.2)统计本轮迭代活跃顶点的规模actvieVerts,将actvieVerts加入ActiveVQueue。当队列ActiveVQueue数据未满,即ActiveVQueue的长度小于K,则将actvieVerts直接加入,当队列ActiveVQueue数据已满,即ActiveVQueue的长度等于K,则先执行出队操作,丢弃离当前本轮迭代轮次最远的那轮迭代活跃顶点的规模数据,再将actvieVerts加入ActiveVQueue。(4)过滤时机判断4.1)定义历史活跃顶点规模AvGHisHertex:收敛型图应用在最近K轮迭代内活跃顶点的平均规模。并利用公式1计算:其中,activeVertex翐指第i轮迭代的活跃顶点规模,K为活跃顶点信息收集周期阈值,i≥K。4.2)定义收敛率convergentRate,用于描述历史活跃顶点规模的收缩情况,并利用公式2计算:收敛率convergentRate本文档来自技高网
...

【技术保护点】
1.一种面向收敛型图应用的GraphX数据缓存方法,其特征在于:该数据缓存方法分为9个步骤:初始化、顶点计算与标识更新,活跃顶点信息收集、过滤时机判断、顶点属性同步、顶点活跃状态同步、过期数据过滤、判断迭代计算是否结束和结束;/n在本数据缓存方法中,有3个基本参数:活跃顶点信息收集周期阈值K、收敛程度下限区间Min、收敛程度上限区间Max;K取值在3~5之间,Min取值在0.25~0.5之间,Max取值为0.75~0.85之间;/n在执行本方法前,对图数据进行预处理操作,即将图数据加载、划分、格式化操作形成顶点集合VertexRDD和边集合EdgeRDD;/n(1)初始化:/n根据应用的初始化消息为以及具体的操作语义,对图数据进行初始化操作;系统遍历VertexRDD中每个顶点分区的顶点,将应用的初始化消息和具体的处理语义作用于顶点上,初始化顶点属性;将参与第1轮迭代计算的顶点的状态初始化为活跃状态;同时根据顶点状态是否为活跃,初始化顶点标识,将活跃顶点的标识初始化为0,其他的顶点初始化为-1;然后,将顶点的属性值与活跃状态同步到EdgeRDD中以完成初始化;/n(2)顶点计算与标识更新/n2.1)遍历EdgeRDD每个边分区中包含活跃顶点的边数据,执行用户定义的SendMsg()消息发送函数与MergeMsg()消息聚合函数,进行消息的发送与消息的本地聚合,形成局部消息LocalMessage,LocalMessage表示为RDD[(vid,msg)],(vid,msg)二元组为局部消息内部数据的具体展现形式,其中vid为顶点ID,msg为计算所产生的消息;/n2.2)LocalMessage利用VertexRDD的分区器进行数据重分区操作,然后与VertexRDD进行连接操作,遍历LocalMessage中每条记录,执行用户定义的MergeMsg()消息聚合函数进行消息聚合以及顶点标注;消息聚合以及顶点标注操作使每个接收到消息的顶点仅存储一条消息,仅产生一个标识;若迭代轮次为iter,标识方法将收到消息的顶点标注为iter+1,与消息一同存储于MessageRDD中;MessageRDD类型为VertexRDD,内部存储顶点接收到的消息以及顶点标识;/n2.3)VertexRDD与MessageRDD进行连接操作,遍历顶点分区中的每个顶点,执行用户定义vPorg()顶点计算函数,完成应用的计算;同时,比较VertexRDD中顶点v的标识flag...

【技术特征摘要】
1.一种面向收敛型图应用的GraphX数据缓存方法,其特征在于:该数据缓存方法分为9个步骤:初始化、顶点计算与标识更新,活跃顶点信息收集、过滤时机判断、顶点属性同步、顶点活跃状态同步、过期数据过滤、判断迭代计算是否结束和结束;
在本数据缓存方法中,有3个基本参数:活跃顶点信息收集周期阈值K、收敛程度下限区间Min、收敛程度上限区间Max;K取值在3~5之间,Min取值在0.25~0.5之间,Max取值为0.75~0.85之间;
在执行本方法前,对图数据进行预处理操作,即将图数据加载、划分、格式化操作形成顶点集合VertexRDD和边集合EdgeRDD;
(1)初始化:
根据应用的初始化消息为以及具体的操作语义,对图数据进行初始化操作;系统遍历VertexRDD中每个顶点分区的顶点,将应用的初始化消息和具体的处理语义作用于顶点上,初始化顶点属性;将参与第1轮迭代计算的顶点的状态初始化为活跃状态;同时根据顶点状态是否为活跃,初始化顶点标识,将活跃顶点的标识初始化为0,其他的顶点初始化为-1;然后,将顶点的属性值与活跃状态同步到EdgeRDD中以完成初始化;
(2)顶点计算与标识更新
2.1)遍历EdgeRDD每个边分区中包含活跃顶点的边数据,执行用户定义的SendMsg()消息发送函数与MergeMsg()消息聚合函数,进行消息的发送与消息的本地聚合,形成局部消息LocalMessage,LocalMessage表示为RDD[(vid,msg)],(vid,msg)二元组为局部消息内部数据的具体展现形式,其中vid为顶点ID,msg为计算所产生的消息;
2.2)LocalMessage利用VertexRDD的分区器进行数据重分区操作,然后与VertexRDD进行连接操作,遍历LocalMessage中每条记录,执行用户定义的MergeMsg()消息聚合函数进行消息聚合以及顶点标注;消息聚合以及顶点标注操作使每个接收到消息的顶点仅存储一条消息,仅产生一个标识;若迭代轮次为iter,标识方法将收到消息的顶点标注为iter+1,与消息一同存储于MessageRDD中;MessageRDD类型为VertexRDD,内部存储顶点接收到的消息以及顶点标识;
2.3)VertexRDD与MessageRDD进行连接操作,遍历顶点分区中的每个顶点,执行用户定义vPorg()顶点计算函数,完成应用的计算;同时,比较VertexRDD中顶点v的标识flag1与MessageRDD中顶点v的标识flag2,若flag1小于flag2则将flag1更新为flag2;顶点计算与标识更新完成后,形成新的VertexRDD并缓存于内存中;
(3)活跃顶点信息收集
3.1)定义长度为K的队列ActiveVQueue用于存储最近K轮迭代活跃顶点的规模信息;K为活跃顶点信息收集周期阈值;
3.2)统计本轮迭代活跃顶点的规模actvieVerts,将actvieVerts加入ActiveVQueue;当队列ActiveVQueue数据未满,即ActiveVQueue的长度小于K,则将actvieVerts直接加入,当队列ActiveVQueue数据已满,即ActiveVQueue的长度等于K,则先执行出队操作,丢弃离当前本轮迭代轮次最远的那轮迭代活跃顶点的规模数据,再将actvieVerts加入ActiveVQueue;
(4)过滤时机判断
4.1)定义历史活跃顶点规模AvGHisVertex:收敛型图应用在最近K轮迭代内活跃顶点的平均规模;并利用公式1计算:



其中,activeVertexi指第i轮迭代的活跃顶点规模,K为活跃顶点信息收集周期阈值,i≥K;
4.2)定义收敛率convergentRate,用于描述历史活跃顶点规模的收缩情况,并利用公式2计算:



收敛率convergentRate描述了收敛型图应用活跃顶点规模的变化趋势,当convergentRate>1时,说明活跃顶点的规模在增长,convergentRate<1时,说明活跃顶点的规模在收缩;Min与Max定义了活跃顶点规模收缩情况的变化区间,即下限与上限;当convergentRate在收敛区间内,即convergentRate大于等于Min,且小于等于Max,则本轮迭代进行过期数据过滤,记过滤迭代轮次为curIter,过滤标识isFilter为true,清空ActiveVQueue,将本轮迭代的actvieVerts重新加入ActiveVQueue...

【专利技术属性】
技术研发人员:梁毅丁毅梁岩德于泽群
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京;11

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

1