【技术实现步骤摘要】
一种面向收敛型图应用的GraphX数据缓存方法
本专利技术属于分布式图计算领域,具体涉及分布式内存图计算系统的缓存优化技术。
技术介绍
GraphX是图计算领域被广泛使用的分布式图处理系统。GraphX构建于分布式计算引擎Spark之上,通过利用Spark提供的丰富的数据操作算子和计算引擎,获得较好的图数据计算效率。GraphX借助Spark弹性分布式数据集RDD进行大规模图数据的表达,将图中顶点与边表达为VertexRDD与EdgeRDD,降低用户的操作门槛。GraphX利用Spark的数据操作算子作用于VertexRDD与EdgeRDD上来执行迭代图处理操作,并利用Spark提供的基于内存的数据缓存方法,将待处理的图数据完全缓存于内存中,以加速数据处理。在大规模图处理中,收敛型图应用是一类典型图分析应用,其特点是在图数据迭代处理过程中,迭代轮次间活跃的图顶点规模呈现逐渐缩小的趋势,且任意顶点一旦从活跃状态转为非活跃状态,则保持非活跃状态直至应用结束。收敛型图应用广泛存在,如单源最短路径SSSP、宽度优先遍历BFS、deltaPageRank等。然而,GraphX在处理收敛型图应用时会出现如下问题:既有GraphX采用静态的数据缓存方法,即在每轮迭代处理时将图数据完整地缓存于内存中,并未考虑实际参与计算的数据规模。这使得收敛型图应用在GraphX系统中运行时,缓存中存在非活跃顶点数据以及大量与之关联的、不再参与计算的边数据,降低了缓存空间的有效利用率。同时在应用内存配置受限的情况下,系统无法完整缓存 ...
【技术保护点】
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)顶点计算与标识更 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。