大规模图数据处理方法技术

技术编号:10211353 阅读:238 留言:0更新日期:2014-07-12 17:17
本发明专利技术公开了一种大规模图数据处理方法,用于解决现有大规模图数据处理方法效率低的技术问题。技术方案是将每个并行作业转换为一系列全局迭代作业,每次迭代分为计算、全局通信和栅栏同步三个有序阶段。计算分为全局计算和本地计算,其中本地计算由一系列连续的内部迭代组成;全局通信阶段每个工作节点把当前全局迭代的消息发送给进行下一次全局迭代的工作节点;栅栏同步阶段主节点等待所有工作节点消息传递完成,然后开始下一次全局迭代。由于处理过程采用了多次内部迭代,减少了全局迭代次数。对美国东北地区的公路数据处理单源最短路径需要迭代次数由背景技术的3800多次降低到25次;执行时间从背景技术的1200s减少为60s。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种,用于解决现有效率低的技术问题。技术方案是将每个并行作业转换为一系列全局迭代作业,每次迭代分为计算、全局通信和栅栏同步三个有序阶段。计算分为全局计算和本地计算,其中本地计算由一系列连续的内部迭代组成;全局通信阶段每个工作节点把当前全局迭代的消息发送给进行下一次全局迭代的工作节点;栅栏同步阶段主节点等待所有工作节点消息传递完成,然后开始下一次全局迭代。由于处理过程采用了多次内部迭代,减少了全局迭代次数。对美国东北地区的公路数据处理单源最短路径需要迭代次数由
技术介绍
的3800多次降低到25次;执行时间从
技术介绍
的1200s减少为60s。【专利说明】
本专利技术涉及一种数据处理方法,特别是涉及一种。
技术介绍
随着社交网络分析、生物信息网络分析、机器学习等新兴应用的快速增长,对上亿顶点级别大规模图的处理能力的需求愈加迫切。现有的主要有基于MapReduce模型和基于BSP模型的方法。文献“Pregel:A System for Large-Scale Graph Processing, SIGMOD, 2010,P135-145”公开了一种基于BSP模型的方法。该方法由一系列全局迭代组成,在每次迭代过程中,每个图顶点接受上一次迭代发送的消息,然后修改自己的值,最后发送消息给邻接顶点。该方法能有效解决大规模图数据的处理问题,但收敛性较慢,并且通信代价很大。例如执行单源最短路径算法时,同步和通信时间要占总时间的80-90%,导致运行总时间过长,效率较低。该方法对美国东北地区的公路数据处理单源最短路径需要迭代3800多次,执行时间为1200s。
技术实现思路
为了解决现有效率低的技术问题,本专利技术提供一种。该方法将每个并行作业转换为一系列全局迭代作业,每次迭代分为计算、全局通信和栅栏同步三个有序阶段。计算阶段分为全局计算和本地计算两部分,其中本地计算由一系列连续的内部迭代组成;全局通信阶段每个工作节点把当前全局迭代的消息发送给进行下一次全局迭代的工作节点;栅栏同步阶段主节点等待所有工作节点消息传递完成,然后开始下一次全局迭代。由于处理过程采用了多次内部迭代,减少了全局迭代次数;在全局通信时,只需要向临界顶点发送消息,降低了通信代价,减少了执行时间。本专利技术解决其技术问题所采用的技术方案是:一种,其特点是采用以下步骤:步骤一、数据分区和数据加载。输入有向图或无向图,采用邻接表形式存储,每个顶点有一个全局唯一的顶点ID。G=〈V,E>表示原图,V是顶点的集合,E是边的集合。在分区后把G分为k个子图分区=PpPfPk,并且P1 U P2 U…U Pk=V, V ,尸?ΠΡ广0。METIS分区的结果是给每个顶点一个分区ID,为了保证数据加载时,每个分区上的子图能加载到同一个工作节点上,需要按照公式(I)对顶点ID进行修改。U,=u*k+p(I)式中,u为 顶点的ID,k为分区的数目,P表示顶点的分区ID,u’是修改后的顶点ID0数据分区后进行数据加载。每个工作节点加载一个子图,k个子图分区对应k个工作节点。对各个工作节点进行一次数据再分布的过程,使工作节点Wi加载子图分区Pi的数据。每个工作节点首先加载本地的子图数据加载到内存中,然后对加载的图数据进行一次再分布的过程,以确定消息通信时的路由地址。工作节点Wi可能存储的是子图分区Pp再分布时按照公式(2)对匕上的每个顶点得到目的工作节点的序号i,然后把该顶点及其邻接表发送给目的工作节点Wi。i=u’modk (I ^ i ^ k)(2)步骤二、数据加载成功后,每个工作节点开始计算。计算阶段分为全局计算和本地计算两部分,其中本地计算由一系列连续的内部迭代组成。本地顶点参与本地计算,临界顶点参与全局计算。根据图顶点的定义,本地计算不需要与其他工作节点进行通信,全局计算需要与其他工作节点进行通信。第一次全局迭代的全局计算时,每个顶点都是活跃的,调用它的compute方法。后续迭代的全局计算,只考虑临界顶点,每个临界顶点接受其他工作节点上的顶点在上一次全局迭代发送的消息,然后调用它的compute方法,最后向邻接顶点发送消息。全局计算完成后,每个工作节点不需要进行全局同步就直接进入本地计算阶段,开始对本地节点进行处理。全局计算只有一次,而本地计算是由一系列连续的内部迭代组成,每个工作节点独立的进行内部迭代,不需要与其他工作节点进行消息传递和同步。当前内部迭代完成后,若还有活跃顶点或者有消息传递时,则直接开始下一次内部迭代;否则每个分区上本地计算就终止,开始进行全局通信。步骤三、全局通信阶段。当本地计算完成后,就开始进行全局通信,每个顶点利用消息传递机制把当前全局迭代的消息发送给进行下一次全局迭代的顶点。在全局计算和本地计算过程中,缓存了向临界顶点发送的消息。在内部迭代完成后,只需要把所有缓存的消息在下一次全局迭代开始前发送到目的临界顶点。步骤四、栅栏同步阶段。每个工作节点发送完消息后,就开始进入全局同步阶段。发送完消息的节点进入全局的栅栏,然后开始等待其他工作节点进入。等所有节点都进入全局的栅栏后,每个节点把收到的消息队列赋值给参与下一次计算的顶点,然后离开栅栏进入步骤二,开始进行下一次全局迭代的计算。后续迭代和第一次迭代相同,都有多次内部迭代。在同步完成后,若主节点发现每个工作节点上的顶点都不活跃并且工作节点间没有消息传递时,就结束整个作业,输出计算结果。本专利技术的有益效果是:该方法将每个并行作业转换为一系列全局迭代作业,每次迭代分为计算、全局通信和栅栏同步三个有序阶段。计算阶段分为全局计算和本地计算两部分,其中本地计算由一系列连续的内部迭代组成;全局通信阶段每个工作节点把当前全局迭代的消息发送给进行下一次全局迭代的工作节点;栅栏同步阶段主节点等待所有工作节点消息传递完成,然后开始下一次全局迭代。由于处理过程采用了多次内部迭代,减少了全局迭代次数;在全局通信时,只需要向临界顶点发送消息,降低了通信代价。对美国东北地区的公路数据处理单源最短路径需要迭代次数由
技术介绍
的3800多次降低到25次;同时通信量减少1000倍,执行时间从
技术介绍
的1200s减少为60s。下面结合附图和【具体实施方式】对本专利技术作详细说明。【专利附图】【附图说明】图1是本专利技术的流程图。【具体实施方式】参照图1。该方法中有一个主节点和多个工作节点。主节点负责各工作节点的管理;分配和调度任务到所有工作节点;控制全局同步,在栅栏同步成功后,主节点会指示工作节点进行下一次全局迭代。工作节点用于执行具体的任务,同时负责消息的发送和接收;工作节点定期向主节点发送“心跳”信息,该信息包含每个工作节点的状态,可用的系统内存等。该方法采用以顶点为中心进行编程,需要用户书重写顶点的compute方法,每个顶点的compute方法相同。针对不同的算法,顶点的compute方法不尽相同。但总体上分为三大步骤:(I)接收上一次迭代发送的消息;(2)更新顶点的值和状态;(3)向邻接顶点发送消息。在该方法中,用户只需要为顶点编程,不需要考虑整个分布式架构,该方法会自动调用用户书写的compute方法来完成对整个大图的计算。1、数据分区和数据加载。输入有向图或无向图,采用邻接表形本文档来自技高网
...

【技术保护点】
一种大规模图数据处理方法,其特征在于包括以下步骤:步骤一、数据分区和数据加载;输入有向图或无向图,采用邻接表形式存储,每个顶点有一个全局唯一的顶点ID;G=<V,E>表示原图,V是顶点的集合,E是边的集合;在分区后把G分为k个子图分区:P1,P2…Pk,并且P1∪P2∪…∪Pk=V,METIS分区的结果是给每个顶点一个分区ID,为了保证数据加载时,每个分区上的子图能加载到同一个工作节点上,需要按照公式(1)对顶点ID进行修改;u'=u*k+p        (1)式中,u为顶点的ID,k为分区的数目,p表示顶点的分区ID,u'是修改后的顶点ID;数据分区后进行数据加载;每个工作节点加载一个子图,k个子图分区对应k个工作节点;对各个工作节点进行一次数据再分布的过程,使工作节点Wi加载子图分区Pi的数据;每个工作节点首先加载本地的子图数据加载到内存中,然后对加载的图数据进行一次再分布的过程,以确定消息通信时的路由地址;工作节点Wi可能存储的是子图分区Pj,再分布时按照公式(2)对Pj上的每个顶点得到目的工作节点的序号i,然后把该顶点及其邻接表发送给目的工作节点Wi;i=u'modk (1≤i≤k)         (2)步骤二、数据加载成功后,每个工作节点开始计算;计算阶段分为全局计算和本地计算两部分,其中本地计算由一系列连续的内部迭代组成;本地顶点参与本地计算,临界顶点参与全局计算;根据图顶点的定义,本地计算不需要与其他工作节点进行通信,全局计算需要与其他工作节点进行通信;第一次全局迭代的全局计算时,每个顶点都是活跃的,调用它的compute方法;后续迭代的全局计算,只考虑临界顶点,每个临界顶点接受其他工作节点上的顶点在上一次全局迭代发送的消息,然后调用它的compute方法,最后向邻接顶点发送消息;全局计算完成后,每个工作节点不需要进行全局同步就直接进入本地计算阶段,开始对本地节点进行处理;全局计算只有一次,而本地计算是由一系列连续的内部迭代组成,每个工作节点独立的进行内部迭代,不需要与其他工作节点进行消息传递和同步;当前内部迭代完成后,若还有活跃顶点或者有消息传递时,则直接开始下一次内部迭代;否则每个分区上本地计算就终止,开始进行全局通信;步骤三、全局通信阶段;当本地计算完成后,就开始进行全局通信,每个顶点利用消息传递机制把当前全局迭代的消息发送给进行下一次全局迭代的顶点;在全局计算和本地计算过程中,缓存了向临界顶点发送的消息;在内部迭代完成后,只需要把所有缓存的消息在下一次全局迭代开始前发送到目的临界顶点;步骤四、栅栏同步阶段;每个工作节点发送完消息后,就开始进入全局同步阶段;发送完消息的节点进入全局的栅栏,然后开始等待其他工作节点进入;等所有节点都进入全局的栅栏后,每个节点把收到的消息队列赋值给参与下一次计算的顶点,然后离开栅栏进入步骤二,开始进行下一次全局迭代的计算;后续迭代和第一次迭代相同,都有多次内部迭代;在同步完成后,若主节点发现每个工作节点上的顶点都不活跃并且工作节点间没有消息传递时,就结束整个作业,输出计算结果。...

【技术特征摘要】

【专利技术属性】
技术研发人员:陈群白松李战怀勾志营索勃潘巍
申请(专利权)人:西北工业大学
类型:发明
国别省市:陕西;61

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

1