一种基于缓存机制的流式图划分方法和系统与流程

文档序号:20917148发布日期:2020-05-29 13:40阅读:311来源:国知局
一种基于缓存机制的流式图划分方法和系统与流程
本发明涉及图计算系统,具体提出了一种针对分布式图计算的基于缓存机制的流式图划分方法和系统。
背景技术
:现在的主流的图计算系统,通常需要将整张图加载到内存。随着时代发展,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为本发明方法的流程图;图2为不同流式图划分方法经实验得到的有关平均备份数量的柱状图。具体实施方式下面结合具体实施方式对本发明做进一步阐述和说明。本发明中各个实施方式的技术特征在没有相互冲突的前提下,均可进行相应组合。本发明中图以边流的形式读入系统。第一计算模块会根据当前各个分区的容量、顶点分布对当前进入系统的边进行第一次粗粒度划分。如果第一计算模块无法根据当前信息为到达边做出划分决策,则将到达边放入等待队列q边更新此边的顶点信息到缓存。第一计算模块继续对之后到达的边进行处理直到等待队列q满。当等待队列q满,第一计算模块停止处理新到边;第二计算模块根据当前的信息开始按顺序处理等待队列中的边。第二计算模块一旦处理完所有在等待队列中的边,第二计算模块停止计算告知第一计算模块等待队列已清空,请求第一计算模块恢复运行。第一计算模块收到信息,开始继续处理之后到达的边。依此模式交替运行,如若等待队列满,则第一计算模块停止运行,第二计算模块开始计算。反之,等待队列为空时,第二计算模块停止运行,第一计算模块恢复运行。注,当等待队列未满,但已经没有新到边,这时第一计算模块自己暂停运行并请求第二计算模块处理等待队列中的所有边。当第二计算模块处理完等待队列中的所有边的时候,第二计算模块终止计算并清空缓存。然后请求第一计算模块恢复计算。第一计算模块收到请求,终止运行。至此,此系统完成了对整张图的划分。本发明的具体实现流程为:一条边由两个顶点构成。例如u和v构成边e(u,v);分区p=p1,p2…例,p1对应1号分区。系统初始产生两个线程,线程1和线程2;系统初始,线程1为运行状态,线程2为挂起状态。计算模块1在线程1中,计算模块2在线程2中。线程1中的计算模块1读取持续进来的边流。计算模块1的对一条边的划分流程如下:1)若当前边中的顶点都未出现,则选取当前所有分区中负载最小的分区放置此边;2)若当前边中有且只有一个顶点出现过,则选择在存在此顶点的分区中,最小负载的分区;3)若当前边中两个顶点都出现过,分为以下情况:a)若当前边中两个顶点都出现在了同一分区,算法模块1则选择满足此条件分区中负载最小的分区。b)若当前边中的两个顶点出现在不同分区,算法模块1则将此边放入等待队列q中,并更新两个顶点其所以对应的邻结链表。至此,计算模块1对于一条边的划分处理完成。当等待队列到达设定的阈值时,计算模块2开始运行,计算模块1挂起。计算模块2处理流程如下:1.对于边e(u,v),对u所存在的分区进行计算:p(u)与n(v)的交集,对v所存在的分区进行计算:p(u)与n(v)的交集;2.完成计算后,选出分数最高的分区。如果存在多个同样分数的分区,选择负载最低的分区作为最终分区,更新u和v所在分区。3.在u的邻接链表中删除v,在v的邻接链表中删除u。计算模块2对等待队列中的所有边完成计算后,线程2挂起,唤醒线程1。直至对整张图处理结束对本发明方法进行验证,对照组选用的流式图划分方法分别为当前主流的greedy,hdrf,dbh。下表1中为实验所使用的的真实世界数据集。表1图名顶点数量边数量dblp317,0801,049,866com-orkut3,072,441117,185,083com-livejournal3,997,96234,681,189web-google875,7135,105,039图2为进行实验得到的有关平均备份数量的柱状图以及表2为负载均衡率表(max(各分区边数/(总边数/分区数)))。从图2中可以观察到,采用本发明技术方案,在能够严格保证各个分区负载均衡的情况下,有关顶点的平均副本数量(多副本因子,replicationfactor)为所有方案中最低,等同于在之后的图计算中各分区间通信量最低。表2hdrf99.99%greedy99.99%dbh99.25%cache-based99.99%以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1