首页> 中国专利> 一种基于并发改进的大规模图数据流式划分方法及系统

一种基于并发改进的大规模图数据流式划分方法及系统

摘要

本发明公开了一种基于并发改进的大规模图数据流式划分方法及系统,属于计算机存储领域。本发明包括:工作节点登记同步;代理服务器发送顶点信息;工作节点返回梯度信息;代理服务器发送最优分区信息;工作节点保存分区结果。本发明通过一次发送多个顶点及其相关信息的方法,解决了现有流式图划分方法一次网络时延处理一个顶点的问题,减少网络时延对系统的影响,提高了图划分效率。

著录项

  • 公开/公告号CN104954477A

    专利类型发明专利

  • 公开/公告日2015-09-30

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201510348875.5

  • 申请日2015-06-23

  • 分类号H04L29/08(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人廖盈春

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-12-18 11:14:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-12

    授权

    授权

  • 2015-11-04

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20150623

    实质审查的生效

  • 2015-09-30

    公开

    公开

说明书

技术领域

本发明属于计算机存储技术领域,更具体地,涉及一种基于并发改进 的大规模图数据流式划分方法及系统。

背景技术

图划分是指将一个规模很大的图数据拆分成若干份,分散到一个分布 式系统中进行处理。图划分算法一般有三个目标,第一是需要保证划分后 的多个分区所包含的数据量满足一定的平衡性;第二是要减少分区间的切 边率,因为切边在分布式系统中意味着主机间的通信;第三则是算法能高 效的完成划分。

静态图划分算法根据整个静态图的信息来处理图数据中所有点的划分。 当图数据规模较小时,静态图划分算法能有效处理,获得较小的切边率。 但是随着应用的快速发展,图数据规模的急剧增长给静态图划分算法造成 显著挑战,因其处理速度及可扩展性较差而难以处理千万级以上大规模的 流式图数据。

流式图划分算法则一次只处理一个点的划分,通常根据新到点的邻接 信息等比较简单的数据,采用贪心策略,对切边数量和分区平衡统筹考虑 做出决策。现有的顶点划分流式算法,在分布式部署实现中,对新到达系 统的顶点,控制节点将该顶点信息及其相关的邻接顶点链表信息发送给对 应的K个工作者节点;在工作者节点处,先缓存接收到的顶点v及邻接顶 点链表信息,再使用单步贪心算法计算将顶点v分配给本节点后的梯度值 并将该值返回给控制节点;当控制节点收到顶点v的所有梯度值后,选取 最大值,将对应的最优化选择分区i发送K个工作者节点;工作者节点收 到最优化选择分区后,判断该最优结果是否是本分区,若是本分区,则从 缓存中把顶点v及其邻接顶点链表信息取出并存储在本地,若非本分区, 则从缓存中删除顶点v及其邻接顶点链表信息并将(顶点v-分区结果i) 键值对放入本地表中,以供后续分布式图算法运行时进行查找。

现有的顶点划分流式算法每次只发送一个顶点及其邻接顶点信息,记 RTT为网络往返传播时延,在理想情况下处理一个新到节点的时间为:

T=发送邻接顶点信息时间+工作者节点数据处理时间+回收梯度值时间

=1×RTT+工作者数据处理时间+数据传输时间

=1×RTT+工作者数据处理时间+(邻接节点信息大小+梯度信息大小) /网络传输速率。

现有的顶点划分流式算法每次发送一个顶点及其邻接顶点信息后,都 需要等待工作节点返回结果,每个顶点的处理时间除了固定的数据处理时 间和网络传输时间外,都额外增加了一个网络往返传播时延的开销,极大 的拖累了算法的效率。

发明内容

针对现有技术的以上缺陷或改进需求,本发明提供一种基于并发改进 的大规模图数据流式划分方法及系统,通过一次发送多个顶点及其相关信 息的方法,解决了现有流式图划分方法一次网络往返传播时延处理一个顶 点的问题,减少网络时延对系统的影响,提高了图划分效率。

为实现上述目的,按照本发明的一个方面,提供了一种基于并发改进 的大规模图数据流式划分方法,包括以下步骤:

步骤1所有工作节点将其由IP和端口号组成的SessionId发送给代理 服务器,所述代理服务器将根据收到各SessionId的先后顺序给其编号作 为Id,并将编号后所有工作节点的SessionId和Id构成表发送给所有工作 节点;

步骤2所述代理服务器依次发送顶点信息,发送每一个顶点前,先将 初始值为N的信号量减1,其中N为并发度,若所述信号量不为负则发送该 顶点信息及其邻接顶点信息给所有工作节点,所述代理服务器持续发送顶 点信息直到所述信号量为负时暂停发送;

步骤3各工作节点接收来自所述代理服务器的顶点信息及其邻接顶点 信息,根据工作节点的本地缓存中已分配的顶点信息计算贪心梯度值 δg(Vi+1,S)并将其返回给所述代理服务器:

δg(Vi+1,S)=|N(Vi+1)S|-ηkn((|S|+1)32-|S|32)

其中,Vi+1表示待处理的顶点;S表示图数据在该工作节点的分区结果 存储区中的顶点集;N(Vi+1)表示顶点Vi+1的所有邻接顶点的集合;k表示分区 的数量;n表示图数据总的顶点数量;η表示平衡系数;

步骤4所述代理服务器为每个顶点记录一个最优的贪心梯度信息,当 返回的贪心梯度信息数量达到所述分区的数量时则认为所有的分区已处理 完毕,将最优的贪心梯度信息的分区作为最后的分区结果发送给各工作节 点,同时将所述信号量加1,当所述信号量非负时,执行所述步骤2,所述 代理服务器继续发送顶点信息,直至所有顶点发送完毕;

步骤5各工作节点收到最优分区信息后进行判断,若该顶点位于本分 区则将顶点信息及其邻接顶点信息存储在本地,若该顶点位于其他分区, 则记录一个顶点编号和分区号作为索引,将本地缓存中的顶点信息及邻接 顶点信息丢弃。

按照本发明的另一方面,提供了一种基于并发改进的大规模图数据流 式划分系统,包括多个工作节点模块和代理服务器模块,其中:

所述工作节点模块,用于向所述代理服务器模块注册IP和端口信息, 接收来自所述代理服务器模块的顶点信息并计算贪心梯度值,并向所述代 理服务器模块返回计算结果;

所述代理服务器模块,用于登记系统中的所述多个工作节点模块,进 行系统中的工作任务划分以及发送图元数据及系统信息给各工作节点模块, 并根据所述工作节点模块返回的贪心梯度值决定顶点的分区结果并通知各 工作节点模块。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有 以下有益效果:

本发明在处理图数据的流式划分时,一次发送多个顶点及其邻接顶点 信息给各工作节点,多个顶点的处理只需要一个网络往返传播时延,极大 的提升了划分效率。

附图说明

图1为本发明大规模图数据流式划分方法的流程图;

图2为本发明大规模图数据流式划分系统的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图 及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体 实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的 本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可 以相互组合。

图1为本发明大规模图数据流式划分方法的流程图,具体包括以下步 骤:

步骤1工作节点登记同步:

所有工作节点将其SessionId(由IP和端口号组成)发送给代理服务 器,代理服务器将根据收到SessionId的先后顺序给其编号作为Id,编号 后将所有工作节点的SessionId和Id构成表发送给所有的工作节点,工作 节点可以据此查询本工作节点在系统中的编号。

步骤2代理服务器发送顶点信息:

对于并发度为N的情况,代理服务器使用初始值为N的信号量,将要 发送一个顶点时,先对信号量进行P操作,即将信号量减1,若信号量不为 负则发送该顶点及其邻接顶点信息给各工作节点,工作节点接收到顶点信 息后进入步骤3。代理服务器则继续持续发送顶点信息直到信号量为负时暂 停发送。工作节点处理接收到的顶点信息与代理服务器发送后续的顶点信 息同时进行,对于代理服务器而言,最多有相当于并发度N数目的顶点处 于未处理中。

步骤3工作节点返回梯度信息:

工作节点接收来自代理服务器的顶点信息,根据本地内存中已分配的 顶点信息计算贪心梯度值δg(Vi+1,S)=|N(Vi+1)S|-ηkn((|S|+1)32-|S|32),并将其 返回给代理服务器。

其中,Vi+1表示待处理的顶点;S表示图数据在该工作节点的分区结果 存储区中的顶点集;N(Vi+1)表示顶点Vi+1的所有邻接顶点的集合;k表示分区 的数量;n表示总的顶点数量;η表示平衡系数。贪心梯度值δg(Vi+1,S)的前 一项|N(Vi+1)∩S|表示了顶点Vi+1的所有邻接顶点在该分区中的数量,用来最 小化切边;贪心梯度值δg(Vi+1,S)的后一项用来平衡分区的 大小。

步骤4代理服务器发送最优分区信息:

代理服务器为每个顶点记录一个最优的贪心梯度信息,在收到工作节 点返回的梯度信息后将其与当前最优值比较,取较大者更新此记录。当返 回的贪心梯度信息数量达到分区的数量时则认为所有的分区已处理完毕, 将最优梯度信息的分区作为最后的分区结果发送给各工作节点,工作节点 收到分区结果后进入步骤5。同时,对信号量作V操作,即为信号量加1, 意味着有一个顶点处理完毕,重新开始步骤2,直至所有顶点发送完毕。

步骤5工作节点保存分区结果:

工作节点收到最优分区信息后进行判断,若该顶点位于本分区则将顶 点信息及其邻接顶点信息存储在本地,若顶点位于其他分区,则记录一个 顶点编号和分区号作为索引,将缓存中的顶点信息及邻接顶点信息丢弃。 当工作节点处理完所有的顶点信息和最优分区信息后,算法结束。

本发明提供一个实施例,以一个并发度为50,工作节点为2的情形为 例,具体介绍本发明,包括以下步骤:

步骤1两个工作节点分别将其IP和端口号作为SessionId发送给代理 服务器,代理服务器为两个工作节点分别编号为1和2,将(SessionId1,Id1)、 (SessionId2,Id2)构成一个表格发送给工作节点1和2,完成登记同步步 骤。

步骤2代理服务器设置一个初始值为50的信号量,开始向各工作节点 依次发送顶点信息,包括顶点的编号和邻接顶点信息。每发送一个顶点前 将信号量减1,持续发送顶点信息直到信号量为负时停止,此时工作节点收 到顶点信息后进入步骤3,代理服务器则等待最优梯度结果。

同时,代理服务器为每个顶点设置nodeId、count、weight三个字段, 分别代表最优分区Id、已返回的梯度信息数量、最优的梯度结果。在本发 明实施例中,nodeId的取值为工作节点编号1或者2,count初始值为0, 最大值为工作节点数量,weight的初始值设为0。

进一步地,代理服务器在发送数据包时维护一个滑动窗口,计算近一 段时间已发送顶点信息数据包的平均大小,当平均大小在一个预设阀值以 上时,采用延迟发送的方法,即累积到一定的大小一次性发送,否则采用 即时发送的方法,即有数据包时立即发送。

步骤3工作节点包括顶点信息缓存区和分区结果存储区,在初始状态 下都为空。工作节点接收来自代理服务器的顶点编号及其邻接顶点信息, 将其置于本地缓存之中,然后根据分区结果存储区中的顶点信息计算贪心 梯度值δg(Vi+1,S)=|N(Vi+1)S|-ηkn((|S|+1)32-|S|32),将其返回给代理服务器。

在本发明实施例中,Vi+1表示待处理的顶点;N(Vi+1)表示顶点Vi+1的所有 邻接顶点的集合;S表示图数据在该工作节点上的分区结果存储区中的顶点 集;|S|的初始值为0,最大值为顶点总数n;k表示分区数量,即工作节点 数2;平衡系数η取1.1。

步骤4代理服务器收到工作节点返回的顶点的贪心梯度值后,与该顶 点的weight字段进行比较,并取较大值更新作为weight字段的值,若修 改了weight字段则同时将nodeId字段设置为返回该贪心梯度值的工作节 点编号,然后代理服务器为count加1,判断是否为分区数目2,若count 达到分区数目,则认为所有的工作节点已经返回梯度值,目前的weight即 为最大值,nodeId即为最优分区信息。代理服务器将该最优分区信息发送 给各工作节点,同时将控制顶点发送的信号量加1,释放资源示意系统可继 续发送顶点信息。

步骤5工作节点收到最优分区信息后,判断该nodeId是否与本工作节 点编号一致,若相同则表示该顶点被分配到该分区,工作节点将顶点编号 及其邻接顶点信息移动到分区结果存储区;若不相同则表示该顶点被分配 到其他分区,工作节点记录该顶点编号和分区号nodeId作为索引,并将缓 存中的信息及其邻接顶点信息丢弃。

图2所示为本发明大规模图数据流式划分系统的模块示意图,包括工 作节点模块和代理服务器模块,其中:

工作节点模块,用于在系统中向代理服务器模块注册IP和端口信息, 接收来自代理服务器模块的顶点信息计算贪心梯度值,向代理服务器模块 返回结果;在本地,根据代理服务器模块的最优划分信息存储图数据的一 个分区。

进一步地,工作节点模块提供顶点信息及其邻接顶点信息的缓存。在 收到顶点信息后将其置于一个缓存之中,直至收到代理服务器模块的最优 分区消息,根据结果选择保留顶点信息到本地分区或者从缓存中删除,节 省了重复传输数据的开销。

代理服务器模块,用于登记系统中的工作节点模块,进行系统中的工 作任务划分以及发送图元数据及系统信息给工作节点模块,并根据工作节 点模块返回的贪心梯度值决定顶点的分区结果并通知各工作节点模块。

进一步地,代理服务器模块根据图数据的点边分布特征控制网络数据 包的发送。对于边分布比较均匀的图数据,其数据特征是先生成的顶点与 后生成的顶点所拥有的邻接顶点数量的期望值是相同的,也即顶点的平均 邻接顶点数目围绕一个期望值上下波动,采用延迟数据发送的方法,避免 了数据内容过小,报文包头过长,网络利用率不高的情况;对于边分布不 均匀的图,例如由真实社交网络数据生成的图,较早加入的顶点的邻接顶 点多于后加入的顶点,新的顶点的邻接顶点数量的期望远低于前一批顶点 邻接顶点数目的平均期望,采用实时发送数据的策略,避免了系统的实时 性降低的情况。

本发明与现有的流式图划分方法相比能明显的加快划分效率,在并发 度为N的情况下,处理N个顶点的时间为N×T=1×RTT+N×工作者数据处理 时间+N×(邻接节点信息大小+梯度信息大小)/网络传输速率。在一般情 况下,工作节点的数据处理速度和网络传输速度都不是瓶颈,单个顶点的 处理速度能够提高接近N倍。

进一步地,在星形拓扑结构下,本发明系统的最大并发度 其中m为工作节点数量;B为网络带宽;D为顶点数据 包大小。本发明在一个网络往返时延内,顶点数据的发送数量最大可以达 到Nstar-max,当达到该并发度后,算法的划分效率将受限于网络带宽上限。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等 同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号