一种基于缓存机制的流式图划分方法和系统技术方案

技术编号:24330766 阅读:52 留言:0更新日期:2020-05-29 19:31
本发明专利技术公开了一种基于缓存机制的流式图划分方法和系统,涉及图计算领域。针对现有流式图划分方法缺乏图数据的局部信息的挖掘,且在划分过程中,容易将多临近边放入不同分区,从而导致较高的平均备份数量,分区间通信代价较高等问题。本发明专利技术利用两个计算模块,其中第一计算模块根据当前各个分区的容量、顶点分布对当前进入系统的边进行粗粒度划分,对无法划分的边,放入等待队列由第二计算模块进行处理,第二计算模块处理完毕后唤醒第一计算模块并进行循环交替处理,直至完成划分。本发明专利技术不需要将整张图读入内存。本发明专利技术的方法能够提高图划分的质量,在保证负载均衡的情况下,明显降低多副本数量和跨分区的通信量。

A method and system of streaming graph partition based on cache mechanism

【技术实现步骤摘要】
一种基于缓存机制的流式图划分方法和系统
本专利技术涉及图计算系统,具体提出了一种针对分布式图计算的基于缓存机制的流式图划分方法和系统。
技术介绍
现在的主流的图计算系统,通常需要将整张图加载到内存。随着时代发展,5G和物联网将在不久的将来迎来大幅增长,连入网络的设备量大幅增加,随之带来的是数据爆发式的增长。图的规模也将从现在的中小规模变为超大规模。单台物理机受内存限制,所以不能处理超大规模的图数据。为了处理超大规模图数据,需要借助分布式计算系统来均摊内存开销。想要在分布式系统的跳线进行图计算,需要将图切分成指定数量的子图,然后分别将子图放入对应的物理计算节点中。目前针对超大规模图的划分主要基于流式处理,即图以边流或是顶点流的形式进入系统。图划分算法根据到达的每一条边或者每一个顶点做出划分决策。流式计算的优点是速度快,对每一条到达边或者顶点只进行一次计算,计算开销小;其次不要将整张图载入内存,对内存依赖性低。Hash流式图划分方法,使用函数h(.)对边e(u,v)中的顶点v进行计算,然后通过得到的结果h(.)=h(v)mod|p|进行分区。DBH流式图划分方法,对整张图的所有顶点进行度(degree)的统计,得到每个顶点的度值。然后使用函数h(.)对边e(u,v)进行计算。与Hash不同的是,引入度值来选择需要哈希的顶点。如下所示,当顶点u度数小于顶点v的度数时,计算h(u);反之,当顶点u的度数大于等于顶点v的度数时,计算h(v)Greedy流式图划分方法,即贪婪的将相邻的边尽可能的放在同一个分区中以降低总顶点副本数。在划分过程中,HDRF会对每个顶点关联一个所在分区集合,当一条边被放置在某个分区时,这条边所对应的的两个顶点的分区集合也会相应更新。在对之后的每一条边进行处理时,Greedy会首先查询当前边的中的顶点是否已存在于某个分区。在所有分区中,找出与当前边顶点交集数量最大的分区并将其例如候选分区名单。最后在候选名单中选出负载最小的分区作为最终分区,如果负载一样,则随机选择。HDRF流式图划分方法,对每个顶点的度数进行记录。不同于DBH,需要对遍历整个图一次积累顶点度值,HDRF仅仅在读取边的时候对顶点度值进行累计,所得的顶点度值d(.)为部分度数,非完整度数。在划分过程中,HDRF非常类似于Greedy,仅在当前边两个顶点分别存在于不同分区时,会选择顶点度数较小的分区作为候选分区。最后和greedy类似,在候选名单中选择负载最小的分区。METIS为传统离线图划分方法,需要将整张图读入内存中,核心方法为将图中多个顶点收缩为一个顶点来减少图中顶点的数量。然后采用K.L。算法进行迭代划分,最后再将粗化后的图还原为原始图。METIS图划分系统是具有代表性的非流式图划分系统。METIS在图划分过程中,需要将整张图读入内存,K.L.算法复杂度高,所需计算时间非常长,计算过程中产生的中间值很多需占用大量内存。外加之内存大小有限,对于图的大小大于内存大小的情景,不能进行划分。现有的流式的图划分方法,如HASH,DBH,GREEDY,HDRF,这些方法可以对超大规模图快速进行图划分。但是由于这些算法仅进行一次计算(one-pass),缺乏图数据的局部信息(graphstructureddatalocality)的挖掘,在划分过程中,容易将多临近边放入不同分区,从而导致较高的平均备份数量,因此分区间通信代价较高。
技术实现思路
针对现阶段各类技术的不足,本专利技术提供一种基于有限容量缓存的的流式的图划分方法和系统。本专利技术能够较好的对超大规模的图以流式处理的方式快速进行划分,不需要将整张图读入内存。在仅用有限的内存充当缓存的情况下,当前的图划分决策能够保证负载均衡并能够最大程度的降低分区间的通信量。本专利技术首先一种基于缓存机制的流式图划分方法,图以边流的形式读入系统,所述方法包括如下步骤:S01:第一计算模块根据当前各个分区的容量、顶点分布对当前进入系统的边进行粗粒度划分;如果第一计算模块无法根据当前信息为到达边做出划分,则将到达边放入等待队列Q(Q存于内存中,即缓存)并更新此边的顶点信息到缓存;S02:当等待队列Q满,或者等待队列未满但已经没有新到边时,第一计算模块停止处理;第二计算模块开始按顺序处理等待队列Q中的边;S03:第二计算模块处理完所有在等待队列Q中的边后,第二计算模块终止计算并清空缓存;若此时第一计算模块已经没有新到边,则完成了对整张图的划分;若仍有新到边,则第一计算模块恢复运行,并返回步骤S01。作为本专利技术的优选方案,第二计算模块处理完所有在等待队列Q中的边后,以向第一计算模块发送请求的方式请求第一计算模块恢复运行;此时,若第一计算模块仍有新到边,则恢复运行,否则第一计算模块不恢复运行,整张图的划分完成。作为本专利技术的优选方案,所述的步骤S01为:1)若当前边中的顶点在分区中都未出现,则第一计算模块选取当前所有分区中负载最小的分区放置此边;2)若当前边中有且只有一个顶点在分区中出现过,则选择在存在此顶点的分区中、最小负载的分区放置此边;3)若当前边中两个顶点都在分区中出现过,分为以下情况:a)若当前边中两个顶点都出现在了同一分区,第一计算模块则选择满足此条件的分区中负载最小的分区放置此边;b)若当前边中的两个顶点出现在不同分区,第一计算模块则将此边放入等待队列Q中,并更新两个顶点其所对应的邻结链表。作为本专利技术的优选方案,所述的第二计算模块处理等待队列Q中的边的方法为:1)对于边e(u,v),其中,u和v分别为两个顶点;对u所存在的分区计算p(u)与n(v)的交集,对v所存在的分区计算p(u)与n(v)的交集,所有分区初始分数si=0,i∈分区1,分区2,…,分区n;如产生交集,则当前分区分数si=si+12)完成计算后,选出si最大的分区;如果存在多个同样分数的分区,选择负载最低的分区作为最终分区放置此边,并更新u和v所在分区;3)在u的邻接链表中删除v,在v的邻接链表中删除u。本专利技术还公开了一种基于缓存机制的流式图划分系统,其包括第一计算模块和第二计算模块;所述的第一计算模块根据当前各个分区的容量、顶点分布对当前进入系统的边进行粗粒度划分;如果第一计算模块无法根据当前信息为到达边做出划分,则将到达边放入等待队列Q并更新此边的顶点信息到缓存;所述的第二计算模块在等待队列Q满时,开始运行并对等待队列Q进行处理,处理完成后第二计算模块终止计算并清空缓存,然后请求第一计算模块恢复计算。图划分的优化目标主要有两个,1.负载均衡,每个分区的边或顶点的数量应基本相等;2.跨越不同分区的边或顶点应尽可能少。本方法能够有效解决在内存受限的情况下最大幅度的去探索图的局部结构,配合基于有限大小缓存对超大规模图进行图划分。并在流式计算的框架下,保证分区平衡的情况下能够对每一条到达边或顶点做出较优的划分决策。附本文档来自技高网
...

【技术保护点】
1.一种基于缓存机制的流式图划分方法,其特征在于,图以边流的形式读入系统,所述方法包括如下步骤:/nS01:第一计算模块根据当前各个分区的容量、顶点分布对当前进入系统的边进行粗粒度划分;如果第一计算模块无法根据当前信息为到达边做出划分,则将到达边放入等待队列Q并更新此边的顶点信息到缓存;/nS02:当等待队列Q满,或者等待队列未满但已经没有新到边时,第一计算模块停止处理;第二计算模块开始按顺序处理等待队列Q中的边;/nS03:第二计算模块处理完所有在等待队列Q中的边后,第二计算模块终止计算并清空缓存;若此时第一计算模块已经没有新到边,则完成了对整张图的划分;若仍有新到边,则第一计算模块恢复运行,并返回步骤S01。/n

【技术特征摘要】
1.一种基于缓存机制的流式图划分方法,其特征在于,图以边流的形式读入系统,所述方法包括如下步骤:
S01:第一计算模块根据当前各个分区的容量、顶点分布对当前进入系统的边进行粗粒度划分;如果第一计算模块无法根据当前信息为到达边做出划分,则将到达边放入等待队列Q并更新此边的顶点信息到缓存;
S02:当等待队列Q满,或者等待队列未满但已经没有新到边时,第一计算模块停止处理;第二计算模块开始按顺序处理等待队列Q中的边;
S03:第二计算模块处理完所有在等待队列Q中的边后,第二计算模块终止计算并清空缓存;若此时第一计算模块已经没有新到边,则完成了对整张图的划分;若仍有新到边,则第一计算模块恢复运行,并返回步骤S01。


2.根据权利要求1所述的基于缓存机制的流式图划分方法,其特征在于,第二计算模块处理完所有在等待队列Q中的边后,以向第一计算模块发送请求的方式请求第一计算模块恢复运行;此时,若第一计算模块仍有新到边,则恢复运行,否则第一计算模块不恢复运行,整张图的划分完成。


3.根据权利要求1所述的基于缓存机制的流式图划分方法,其特征在于,所述的步骤S01为:
1)若当前边中的顶点在分区中都未出现,则第一计算模块选取当前所有分区中负载最小的分区放置此边;
2)若当前边中有且只有一个顶点在分区中出现过,则选择在存在此顶点的分区中、最小负载的分区放置此边;
3)若当前边中两个顶点都在分区中出现过,分为以下情况:
a)若当前边中两个顶点都出现在了同一分区,第一计算模块则选择满足此条件的分区中负载最小的分区放置此边;
b)若当前边中的两个顶点出现在不同分区,第一计算模块则将此边放入等待队列Q中,并更新两个顶点其所对应的邻结链表到缓存。


4.根据权利要求1所述的基于缓存机制的流式图划分方法,其特征在于,所述的第二计算模块处理等待队列Q中的边的方法为:
1)对于边e(u,v),其中,u和v分别为两个顶点;p(u)表示所有分区中存在顶点u的分区;n(v)表示v的邻接链表,即与顶点v所有相临边的顶点集合;对u所存在的分区计算p(u)与n(v)的交集,对v所存在的分区计算p(u)与n(v)的交集;所有分区初始分数si=0,i∈分区1,分区2,…,分区n;如产生交集,则当前分区分数si=si+1;
2)完成计算后,选出si最大的分区;如果存在多个同样分数的分区,选择负载最低的分区作为最终分区放置此边,并更新u和v到...

【专利技术属性】
技术研发人员:李云波罗喜伶许乙付张昌明
申请(专利权)人:北京航空航天大学杭州创新研究院
类型:发明
国别省市:浙江;33

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

1