CN106815080B - 分布式图数据处理方法和装置 - Google Patents
分布式图数据处理方法和装置 Download PDFInfo
- Publication number
- CN106815080B CN106815080B CN201710014047.7A CN201710014047A CN106815080B CN 106815080 B CN106815080 B CN 106815080B CN 201710014047 A CN201710014047 A CN 201710014047A CN 106815080 B CN106815080 B CN 106815080B
- Authority
- CN
- China
- Prior art keywords
- computing node
- slave
- node
- sent
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明提供一种分布式图数据处理方法和装置。本发明提供的分布式图数据处理方法,包括:在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息;若是,则执行下一轮迭代处理;其中,所述目标从计算节点为接收所述第一从计算节点发送的第一计算消息的从计算节点。本发明提供的分布式图数据处理方法和装置,可充分利用从计算节点的计算能力,减少同步等待的时间,优化执行效率,减少总执行时间。
Description
技术领域
本发明涉及数据处理技术,尤其涉及一种分布式图数据处理方法和装置。
背景技术
图数据是由被称为顶点的数据对象的集合和被称为边的数据对象的集合组成的数据结构。由于图数据能够直观地表现现实世界中的许多应用场景,因此,图数据已经被广泛的应用于诸多领域,例如,路径规划、推荐***等。
随着大数据时代的到来,图数据的数据条数(即边的条数)越来越多,数据与数据之间的联系更加复杂。单机已无法满足对图数据的处理。目前,常通过分布式图数据处理方法对图数据进行处理。具体地,将图数据分为多个分块,使得图数据的分块分布在各个从计算节点上进行处理,当其中一个从计算节点执行完本轮迭代计算后(在从计算节点执行本轮迭代计算的过程中,当得到当前分块的任一个顶点的计算结果后,均会向目标从计算节点发送计算消息,以通过上述计算消息将该计算结果发送给目标从计算节点),该从计算节点首先判断消息队列中是否存在待处理的计算消息,若存在待处理的计算消息,则直接进入下一轮迭代计算;若判断消息队列中不存在待处理的计算消息,则再判断正在处理的分块中是否还存在活跃顶点,若判断正在处理的分块中不存在活跃顶点,则在接收到目标从计算节点的回复响应(该回复响应用于告知该从计算节点当前的目标计算节点已经收到其发送的计算消息)后,向主计算节点上报本轮迭代处理过程中发送的计算消息的个数,并等待接收主计算节点发送的控制命令(控制命令可以是计算终止的控制命令或者是进入下一轮计算的控制命令)。
利用现有的分布式图处理方法对图数据进行处理时,当其中任一个从计算节点在判断消息队列中不存在计算消息,且判断正在处理的分块中也不存在活跃顶点时,该从计算节点向主计算节点上报处理信息,并等待主计算节点的控制命令。由于主计算节点需要根据所有从计算节点上报的处理信息来做出控制命令。因此,当该从计算节点在等待接收主计算节点的控制命令的过程中,由于其他从计算节点可能还在执行本轮计算,所以等待时间可能会非常长,并且等待后的控制命令可能是进入下一轮计算。这样,不能充分利用该从计算节点的计算能力,造成资源的浪费,并使得图数据处理的时间较长。
发明内容
本发明提供一种分布式图数据处理方法和装置,可充分利用从计算节点的计算能力,减少同步等待的时间,优化执行效率,减少总执行时间。
本发明第一方面提供一种分布式图数据处理方法,包括:
在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息,其中,所述目标从计算节点为接收所述第一从计算节点发送的第一计算消息的从计算节点;
若是,则执行下一轮迭代处理。
进一步地,所述方法还包括:
若判断没有接收到所述第二计算消息,则在接收到所述目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器;其中,所述处理信息包括所述第一从计算节点在迭代处理过程中发送的第一计算消息的个数以及接收的第二计算消息的个数。
进一步地,所述将迭代处理过程中的处理信息发送给服务器之后,所述方法还包括:
在等待接收主计算节点发送的控制命令的过程中,判断是否接收到所述第二从计算节点发送的第二计算消息;
若是,则执行下一轮迭代处理。
进一步地,在执行下一轮迭代处理之前,所述方法还包括:
向服务器发送删除命令,所述删除命令用于指示所述服务器删除所述处理信息;
向所述第二从计算节点发送回复响应。
进一步地,所述方法还包括:
按照预设的分块的优先级对分块进行迭代处理;其中,优先级高的分块的活跃顶点的数目大于优先级低的分块的活跃顶点的数目。
进一步地,所述方法还包括:
在第一从计算节点向目标从计算节点发送所述第一计算消息时,判断所述第一从计算节点的发送缓冲区的消息缓存量是否大于预设阈值;
若是,则停止发送所述第一计算消息。
本发明第二方面提供一种分布式图数据处理方法,包括:
从服务器中获取每个从计算节点发送的处理信息;其中,所述处理信息包括每个从计算节点在迭代处理的过程中发送的第一计算消息的个数和接收的第二计算消息的个数;
判断所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和是否相等;
若是,则向每个所述从计算节点发送算法终止的控制命令。
本发明第三方面提供一种分布式图数据处理装置,包括:第一判断模块和第一处理模块,其中,
所述第一判断模块,用于在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息,其中,所述目标从计算节点为接收所述第一从计算节点发送的第一计算消息的从计算节点;
所述第一处理模块,用于在所述第一判断模块判断在等待接收目标从计算节点发送的回复响应的过程中,接收到第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。
进一步地,所述第一处理模块,还用于在所述第一判断模块判断没有接收到所述第二计算消息时,则在接收到所述目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器;其中,所述处理信息包括所述第一从计算节点在迭代处理过程中发送的第一计算消息的个数以及接收的第二计算消息的个数。
进一步地,所述第一判断模块,还用于在所述第一处理模块将迭代处理过程中的处理信息发送给服务器之后,在等待接收主计算节点发送的控制命令的过程中,判断是否接收到所述第二从计算节点发送的第二计算消息;
所述第一处理模块,还用于在所述第一判断模块判断在等待接收主计算节点发送的控制命令的过程中,接收到所述第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。
进一步地,所述第一处理模块,还用于在执行下一轮迭代处理之前,向服务器发送删除命令,并向所述第二从计算节点发送回复响应,其中,所述删除命令用于指示所述服务器删除所述处理信息。
进一步地,所述第一处理模块,还具体用于按照预设的分块的优先级对分块进行迭代处理;其中,优先级高的分块的活跃顶点的数目大于优先级低的分块的活跃顶点的数目。
进一步地,所述第一判断模块,还用于在第一从计算节点向目标从计算节点发送所述第一计算消息时,判断所述第一从计算节点的发送缓冲区的消息缓存量是否大于预设阈值;
所述第一处理模块,还用于在所述第一判断模块判断第一从计算节点的发送缓冲区的消息缓存量大于预设阈值时,停止发送所述第一计算消息。
本发明第四方面提供一种分布式图数据处理装置,包括:获取模块、第二判断模块和第二处理模块,其中,
所述获取模块,用于从服务器中获取每个从计算节点发送的处理信息;其中,所述处理信息包括每个从计算节点在迭代处理的过程中发送的第一计算消息的个数和接收的第二计算消息的个数;
所述第二判断模块,用于判断所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和是否相等;
所述第二处理模块,用于在所述第二判断模块判断所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和相等时,向每个所述从计算节点发送算法终止的控制命令。
本发明提供的分布式图数据处理方法和装置,在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复信息的过程中,判断是否接收到第二从计算节点发送的第二计算消息,并在判断接收到第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。这样,相比于现有技术,可避免同步等待的时间(现有技术是由主计算节点根据所有从计算节点上报的处理信息作出进入下一轮计算的控制命令的),可充分利用第一从计算节点的计算能力,减少总执行时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的分布式图数据处理***的结构示意图;
图2为本发明实施例一提供的分布式图数据处理方法的流程图;
图3为本发明实施例二提供的分布式图数据处理方法的流程图;
图4为本发明实施例三提供的分布式图数据处理方法的流程图;
图5为本发明实施例四提供的分布式图数据处理方法的流程图;
图6为本发明实施例五提供的分布式图数据处理方法的流程图;
图7为本发明实施例六提供的分布式图数据处理装置的结构示意图;
图8为本发明实施例七提供的分布式图数据处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种分布式图数据处理方法和装置,可充分利用从计算节点的计算能力,减少同步等待的时间,优化执行效率,减少总执行时间。
本发明提供的分布式图数据处理方法和装置,可应用于图数据处理领域,具体地,可应用本发明提供的分布式图数据处理方法和装置,对图数据进行分布式处理,以充分利用从计算节点的计算能力,减少同步等待的时间,减少总执行时间。
在介绍本发明提供的分布式图数据处理方法和装置之前,首先先介绍一下现有技术中的分布式图数据处理***和方法。图1为现有技术中的分布式图数据处理***的结构示意图。请参照图1,现有的图数据处理***包括:主计算节点、多个从计算节点和服务器。具体地,主计算节点,主要用于执行计算任务的调度和分配,将计算任务分配给从计算节点,并决定算法是否终止;从计算节点,主要用于执行具体的计算任务,并汇报处理信息给主计算节点;服务器,主要用于主计算节点和从计算节点之间交互信息的中间媒介。在介绍了现有技术中的分布式图数据处理***之后,下面来简单介绍一下现有的图数据处理方法。
具体地,典型的图数据计算任务主要包含以下三个过程:图数据加载与分割,迭代计算和结果输出。下面对每个过程作一个简单的介绍:
(1)在图数据加载与分割阶段,图数据被从外部存储加载到内存中,例如,从分布式文件***加载到内存中。每个从计算节点加载一部分图数据,并在加载的过程中对图数据进行图分割。例如,将图数据分割成P个分块,其中,P大于等于从计算节点的数量。需要说明的是,可以采用哈希算法对图数据进行分割,关于图数据分割的具体原理和过程可以参考现有技术中的描述,此处不再赘述。
(2)在从计算节点执行迭代计算前,首先由主计算节点进行任务分配。具体地,每一个分块作为一个计算任务,主计算节点负责将这些计算任务分配给各个从计算节点(分配方式为随机分配),并将分配好的任务列表写到服务器中(任务列表即不同的分块和不同的从计算节点之间的对应关系)。当主计算节点将分配好的任务列表写到服务器之后,从计算节点从服务器中读取任务列表,并保存在本地。当从计算节点获取到任务列表后,主计算节点协调各个从计算节点开始进行迭代计算,之后各个从计算节点进行多轮迭代计算,直到算法终止。
(3)在结果输出阶段,当各个从计算节点执行完多轮迭代计算,且主计算节点判断算法终止后,每个从计算节点将各自的计算结果进行保存。
更具体地,关于分布式图数据处理方法,现有技术中存在两种经典的计算模型,分别为BSP(Bulk Synchronous Parallel,简称BSP)计算模型和AP(Asynchronous Parallel,简称AP)计算模型。由于AP计算模型为本发明最接近的现有技术,下面以AP计算模型为例,对分布式图数据处理方法的具体流程作一个简单的介绍。此外,关于BSP计算模型的具体原理和实现过程可以参见现有技术中的描述,此处不再赘述。
下面以第一从计算节点(多个从计算节点中的其中一个)为执行主体,简单介绍一下在AP计算模型中,图数据处理方法的具体流程。具体地,可以包括以下步骤:
1、第一从计算节点获取分配给自己的所有分块(计算任务)。
2、进行迭代处理;具体地,在一轮迭代处理过程中,对于每一个分块,获取该分块中所有的活跃顶点;对于每一个活跃顶点,获取该顶点在上一轮迭代处理和本轮迭代处理中收到的所有计算消息(可以是第一从计算节点自己或者其他从计算节点发送给其的计算消息);对该顶点调用用户自定义的处理函数F,并将该顶点收到的计算消息传递给F,通过F来更新该顶点的状态,当该顶点的状态发生更新后,发送该顶点的最新状态给邻接顶点(通过邻接顶点的ID可以找到该邻接顶点所在分块的ID,再根据分块的分配列表找到上述分块所在的从计算节点,即发送该顶点的最新状态给目标从计算节点(目标从计算节点处理的分块中包括该顶点的邻接顶点)。)。
3、执行完本轮迭代处理后,判断消息队列中是否存在接收到的计算消息,若存在,则直接执行下一轮迭代处理;若不存在,在判断正在处理的分块中是否存在活跃顶点,若存在,则在接收到计算消息后,执行下一轮迭代处理。
4、若第一从计算节点判断消息队列中不存在计算消息,且判断正在处理的分块中也不存在活跃顶点后,此时,第一从计算节点等待发送的所有计算消息都成功到达目标从计算顶点(目标从计算节点在收到第一从计算节点发送的计算消息后,会进行回复(目标计算节点收到第一从计算节点发送的计算消息后,会给第一从计算节点发送回复响应))。
5、当第一从计算节点发送的计算消息都被回复后,第一从计算节点向主计算节点发送处理信息,其中,处理信息包括第一从计算节点在本轮迭代处理的过程中发送的消息的个数;当第一从计算节点向主计算节点发送处理信息之后,第一从计算节点等待接收主计算节点发送的控制命令(控制命令可以是算法终止的控制命令,也可以是执行下一轮迭代处理的控制命令)。
6、接收到主计算节点发送的控制命令后,根据控制命令执行相关操作(进入下一轮迭代计算或算法终止)。
进一步地,对于主计算节点而言,当所有从计算节点均完成本轮计算任务、且均向主计算节点上报处理信息后。此时,主计算节点将根据所有从计算节点上报的处理信息,作出控制命令。具体地,当所有的从计算节点上报的处理信息显示所有的从计算节点在本轮迭代处理的过程中发送的消息的个数均为0时,判断算法终止,向所有的从计算节点发送算法终止的控制命令;若其中一个从计算节点发送的处理信息表示该从计算节点在本轮迭代处理的过程中发送的消息的个数不为0时,则判断算法没有终止,向所有的从计算节点发送执行下一轮迭代处理的控制命令。需要说明的是,从计算节点是通过服务器向主计算节点发送处理信息的,同样地,主计算节点也是通过服务器向从计算节点下发控制命令的(即主计算节点将控制命令写入服务器,从计算节点从服务器中读取控制命令)。
通过上面的介绍可知,现有技术中,当第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的计算消息、以及判断当前处理的分块中不存在活跃顶点时,就等待接收目标从计算节点发送的回复响应,进而在接收到目标从计算节点发送的回复响应后,第一从计算节点就向主计算节点上报处理信息,其中,处理信息包括第一从计算节点在本轮迭代处理过程中发送的消息的个数,以等待主计算节点发送的控制命令。由于主计算节点需要根据所有从计算节点上报的处理信息来做出控制命令。因此,当第一从计算节点在等待接收主计算节点的控制命令的过程中,由于其他从计算节点可能还在执行本轮计算,这样,第一从计算节点等待时间可能会非常长(例如,其中一个从计算节点可能需要经过一天的迭代计算后,才向主计算节点上报处理信息。),并且等待后的控制命令可能是进入下一轮计算。这样,不能充分利用第一从计算节点的计算能力,造成资源的浪费,并使得图数据处理的时间较长。
在介绍了现有技术中的分布式图数据处理方法之后,下面来详细介绍一下本发明提供的分布式图数据处理方法和装置。
图2为本发明实施例一提供的分布式图数据处理方法的流程图。本实施例的执行主体为从计算节点,且该执行主体可以是单独的分布式图数据处理装置,还可以是集成了图数据处理装置的其他设备,例如,可以是计算机。本发明实施例以执行主体为计算机为例来进行说明。如图2所示,本实施例提供的分布式图数据处理方法,可以包括:
S101、在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息,其中,上述目标从计算节点为接收上述第一从计算节点发送的第一计算消息的从计算节点。
具体地,结合上述的介绍可知,从计算节点在执行本轮迭代处理的过程中,若通过迭代处理,得到正在处理的分块中的任一顶点的更新值时,此时,从计算节点会通过发送计算消息的方式将顶点的更新值发送给目标从计算节点(如前面所介绍的一样,目标从计算节点为从计算节点中、处理的分块中包括该顶点的邻接顶点的从计算节点。具体地,当从计算节点在迭代处理的过程中得到一个顶点的更新值后,可通过该顶点的邻接顶点的ID找到邻接顶点所在的分块的ID,进而通过分块的分配列表找到该邻接顶点所在的分块所在的目标从计算节点)。而当目标从计算节点接收到该从计算节点发送的计算消息后,会给该从计算节点发送回复响应,以通过回复响应告知该从计算节点已经收到其发送的计算消息。
需要说明的是,本发明中,以其中一个从计算节点为执行主体来详细介绍本发明提供的分布式图数据处理方法。进一步地,为了进行区分,本实施例中,以第一从计算节点为执行主体,将第一从计算节点发送的计算消息称为第一计算消息,此外,将给第一从计算节点发送计算消息的其他从计算节点称为第二从计算节点,并将第二从计算节点发送的计算消息称为第二计算消息;另外,将接收第一从计算节点发送的第一计算消息的从计算节点称为目标从计算节点。
更具体地,本步骤中,在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时(此时,可能算法已经终止,也可能是算法还没有终止,第一从计算节点将在未来的某一时刻接收到第二从计算节点发送的第二计算消息),在等待接收目标从计算节点发送的回复信息的过程中,第一从计算节点可以按照预设时间间隔进行判断,或者一直不间断的判断,以判断在等待接收目标从计算节点发送的回复信息的过程中,是否收到第二从计算节点发送的第二计算消息。
需要说明的是,如上面介绍的一样,第一计算消息和第二计算消息均包括消息值(顶点的更新值)和目标顶点的ID。
S102、若是,则执行下一轮迭代处理。
需要说明的是,当第一从计算节点在等待接收目标从计算节点发送的回复信息的过程中收到第二从计算节点发送的第二计算消息,此时,第一从计算节点正在处理的分块中的某一顶点会由于收到新的计算消息而被激活,此时,需要对该顶点进行下一轮迭代处理。因此,本步骤中,若第一从计算节点判断在等待接收目标从计算节点发送的回复信息的过程中收到第二从计算节点发送的第二计算消息,则执行下一轮迭代处理。
本实施例提供的分布式图数据处理方法,在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复信息的过程中,判断是否接收到第二从计算节点发送的第二计算消息,并在判断接收到第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。这样,相比于现有技术,可避免同步等待的时间(现有技术是由主计算节点根据所有从计算节点上报的处理信息作出控制命令的,并且,控制命令可能是执行下一轮迭代处理),可充分利用第一从计算节点的计算能力,以减少总执行时间。
进一步地,在本发明一种可能的实现方式中,在步骤S102之前,所述方法还包括:
向所述第二从计算节点发送回复响应。
具体地,若判断第一从计算节点在等待接收目标从计算节点发送的回复响应的过程中收到第二从计算节点发送的第二计算消息,则在执行下一轮迭代处理之前,第一从计算节点首先需要给第二从计算节点发送回复响应,以告知第二从计算节点已经收到其发送的第二计算消息。
图3为本发明实施例二提供的分布式图数据处理方法的流程图。本实施例涉及的是在等待接收目标从计算节点发送的回复响应的过程中,若判断没有接收到第二从计算节点发送的第二计算消息时,第一从计算节点后续的处理过程。请参照图3,在上述实施例的基础上,本实施例提供的分布式图数据处理方法,可以包括:
S201、若在等待接收目标从计算节点发送的回复响应的过程中,判断没有接收到第二计算消息,则在接收到上述目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器;其中,上述处理信息包括上述第一从计算节点在迭代处理过程中发送的第一计算消息的个数以及接收的第二计算消息的个数。
具体地,本实施例中,若在步骤S101中,在第一从计算节点等待接收目标从计算节点发送的回复响应的过程中,若经过判断发现在这个过程中没有收到第二从计算节点发送的第二计算消息,则在接收到目标从计算节点的回复响应后,第一从计算节点将迭代处理过程中的处理信息发送给服务器。
需要说明的是,迭代处理过程包括第一从计算节点从一开始进行迭代处理至本轮迭代处理完成之间的所有过程。此外,本步骤中,第一从计算节点还可以将其在迭代处理过程中发送的第一计算消息的字节数以及接收的第二计算消息的字节数发送给服务器。
进一步地,当第一从计算节点将迭代处理过程中的处理信息发送给服务器后,主计算节点可以从该服务器中获取到上述处理信息,以根据所有从计算节点上报的上述处理信息作出控制命令(此时的控制命令仅为算法终止的控制命令)。
S202、在等待接收主计算节点发送的控制命令的过程中,判断是否接收到上述第二从计算节点发送的第二计算消息。
具体地,当第一从计算节点将迭代处理过程中的处理信息发送给服务器后,第一从计算节点就等待接收主计算节点发送的控制命令,此时的控制命令为算法终止的控制命令。本实施例中,在第一从计算节点等待接收主计算节点发送的控制命令的过程中,继续判断是否接收到第二从计算计算节点发送的第二计算消息。需要说明的是,第一从计算节点可以按照预设的时间间隔进行判断,也可以在等待的过程中一直不间断的进行判断。
S203、若是,则执行下一轮迭代处理。
参见步骤S102的描述,当第一从计算节点在等待接收主计算节点发送的控制命令的过程中收到第二从计算节点发送的第二计算消息时,此时,说明算法没有终止,第一从计算节点正在处理的分块中的某一顶点会由于收到新的计算消息而被激活,此时,需要对该顶点进行下一轮迭代处理。因此,本步骤中,若第一从计算节点判断在等待接收主计算节点发送的控制命令的过程中收到第二从计算节点发送的第二计算消息时,此时,则执行下一轮迭代处理。
本实施例提供的分布式图数据处理方法,若判断在等待接收目标从计算节点发送的回复响应的过程中,没有接收到第二从计算节点发送的第二计算消息,则在接收到目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器,进而在等待接收主计算节点发送的控制命令的过程中,判断是否接收到第二从计算节点发送的第二计算消息,进而在判断接收到第二从计算接到发送的第二计算消息时,执行下一轮迭代处理。这样,相比于现有技术,可避免同步等待的时间,可充分利用第一从计算节点的计算能力,以减少总执行时间。
图4为本发明实施例三提供的分布式图数据处理方法的流程图。在实施例二的基础上,本实施例涉及是在执行下一轮迭代处理之前,向服务器发送删除命令以及向第二从计算节点发送回复响应的具体过程。具体地,参见图4,本实施例提供的分布式图数据处理方法,在步骤S203之前,还包括:
S301、向服务器发送删除命令,上述删除命令用于指示上述服务器删除上述处理信息。
需要说明的是,当在步骤S202中,若判断接收到第二从计算节点发送的第二计算消息,此时,表明算法还没有终止,第一从计算节点之前通过服务器向主计算节点发送的处理信息并非最后的处理信息,因此,本步骤中,需要向服务器发送删除命令,以通过上述删除命令指示服务器删除上述处理信息。
S302、向上述第二从计算节点发送回复响应。
具体地,当第一从计算节点在等待接收主计算节点发送的控制命令的过程中,收到第二从计算节点发送的第二计算消息时,本步骤中,需要向第二从计算节点发送回复响应,以告知第二从计算节点已经收到了第二从计算节点发送给其的第二计算消息。
进一步地,本发明提供的分布式图数据处理方法,还包括:
按照预设的分块的优先级对分块进行迭代处理;其中,优先级高的分块的活跃顶点的数目大于优先级低的分块的活跃顶点的数目。
需要说明的,第一从计算节点处理的分块包括多个,当第一从计算节点对分块进行迭代处理时,可以按照预设的分块的优先级进行处理,具体地,先处理优先级高的分块,再处理优先级低的分块。需要说明的是,在第一从计算节点处理的多个分块中,分块中的活跃顶点的数目越多,该分块的优先级越高。
本实施例提供的分布式图数据处理方法,在第一从计算节点对分块进行处理时,第一从计算节点将按照预设的分块的优先级对分块进行迭代处理;其中,优先级高的分块的活跃顶点的数目大于优先级低的分块的活跃顶点的数目。这样,可提高执行的效率,减少总执行时间。
图5为本发明实施例四提供的分布式图数据处理方法的流程图。在上述实施例的基础上,本实施例提供的分布式图数据处理方法,还包括:
S401、在第一从计算节点向目标从计算节点发送上述第一计算消息时,判断上述第一从计算节点的发送缓冲区的消息缓存量是否大于预设阈值。
具体地,预设阈值的具体值是用户根据实际需要设定的。本实施例中,不对预设阈值的具体值进行限定。
需要说明的是,当第一从计算节点向目标从计算节点发送第一计算消息时,第一计算消息首先进入第一从计算节点的发送缓存区内,然后经过发送缓存区发送出去,若当前网络较差,则第一从计算节点的发送缓存区内将缓存越来越多的第一计算消息,这样,将非常不利于将第一计算消息发送出去,本步骤中,通过判断第一从计算节点的发送缓冲区的消息缓存量,可通过发送缓存区的消息缓存量来评价当前网络的传输性能。
S402、若是,则停止发送上述第一计算消息。
本步骤中,若在本步骤S401中,判断第一从计算节点的发送缓冲区的消息缓存量大于预设阈值,此时,表明当前网络的传输性能较差,因此,在本步骤中,停止发送第一计算消息,以待第一从计算节点的网络的传输性能好转后再继续发送第一计算消息。
本实施例提供的分布式图数据处理方法,在第一从计算节点向目标从计算节点发送第一计算消息时,通过判断第一从计算节点的发送缓冲区的消息缓存量是否大于预设阈值,进而在判断第一从计算节点的发送缓冲区的消息缓存量大于预设阈值时,停止发送第一计算消息。这样,可充分利用第一从计算节点的网络能力,降低网络开销。
图6为本发明实施例五提供的分布式图数据处理方法。本实施例的执行主体为主计算节点,且该执行主体可以是单独的分布式图数据处理装置,还可以是集成了分布式图数据处理装置的其他设备,例如,可以是计算机。本发明实施例以执行主体为计算机为例来进行说明。请参照图6,本实施例提供的分布式图数据处理方法,可以包括:
S501、从服务器中获取每个从计算节点发送的处理信息;其中,上述处理信息包括每个从计算节点在迭代处理的过程中发送的第一计算消息的个数和接收的第二计算消息的个数。
具体地,结合实施例一和实施例二的描述,当每个从计算节点在等待接收目标从计算节点的回复响应的过程中,判断没有接收到第二计算消息时,就会在接收到目标从计算节点发送的回复响应后,将该从计算节点在迭代处理过程中的处理信息发送给服务器,此后,主计算节点可以从服务器中获取每个从计算节点上报的处理信息。
S502、判断上述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与上述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和是否相等。
具体地,若服务器此时存储的数据包括所有从计算节点上报的处理信息,则在本步骤中,主计算节点可以根据所有的从计算节点在迭代处理的过程中发送的第一计算消息的个数之和,以及所有的从计算节点在迭代处理的过程中接收的消息的个数之和来判断算法是否终止。具体地,若所有的从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所有的从计算节点在迭代处理的过程中接收的第二计算消息的个数之和相等,此时,表明从计算节点所有发送出去的第一计算消息已经被相应的目标从计算节点接收到,算法终止。
S503、若是,则向每个上述从计算节点发送算法终止的控制命令。
具体地,结合步骤S502中的介绍可知,若所有的从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所有的从计算节点在迭代处理的过程中接收的第二计算消息的个数之和相等,此时,表明从计算节点所有发送出去的第一计算消息已经被相应的目标从计算节点接收到,此时,表明算法终止,则主计算节点向每个从计算节点发送算法终止的控制命令。
需要说明的是,主计算节点是通过服务器向每个从计算节点发送算法终止的控制命令的,具体地,主计算节点将算法终止的控制命令写入到服务器中,每个从计算节点从上述个服务器中读取上述控制命令。
图7为本发明提供的分布式图数据处理装置的结构示意图。该装置构成分布式图数据处理***中的从计算节点。此外,该装置可以通过软件、硬件或者软硬结合的方式实现,且该装置可以是单独的分布式图数据处理装置,也可以是集成了分布式图数据处理装置的其他设备,例如,可以是计算机。如图7所示,本实施例提供的分布式图数据处理装置,包括:第一判断模块100和第一处理模块200,其中,
第一判断模块100,用于在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息,其中,所述目标从计算节点为接收所述第一从计算节点发送的第一计算消息的从计算节点;
第一处理模块200,用于在第一判断模块100判断在等待接收目标从计算节点发送的回复响应的过程中,接收到第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,第一处理模块200,还用于在第一判断模块100判断没有接收到所述第二计算消息时,则在接收到所述目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器;其中,所述处理信息包括所述第一从计算节点在迭代处理过程中发送的第一计算消息的个数以及接收的第二计算消息的个数。
进一步地,第一判断模块100,还用于在第一处理模块200将迭代处理过程中的处理信息发送给服务器之后,在等待接收主计算节点发送的控制命令的过程中,判断是否接收到所述第二从计算节点发送的第二计算消息;
第一处理模块200,还用于在第一判断模块100判断在等待接收主计算节点发送的控制命令的过程中,接收到所述第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。
本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,第一处理模块200,还用于在执行下一轮迭代处理之前,向服务器发送删除命令,并向所述第二从计算节点发送回复响应,其中,所述删除命令用于指示所述服务器删除所述处理信息。
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,第一处理模块200,还具体用于按照预设的分块的优先级对分块进行迭代处理;其中,优先级高的分块的活跃顶点的数目大于优先级低的分块的活跃顶点的数目。
进一步地,第一判断模块100,还用于在第一从计算节点向目标从计算节点发送所述第一计算消息时,判断所述第一从计算节点的发送缓冲区的消息缓存量是否大于预设阈值;
第一处理模块200,还用于在第一判断模块100判断第一从计算节点的发送缓冲区的消息缓存量大于预设阈值时,停止发送所述第一计算消息。
本实施例的装置,可以用于执行图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图8为本发明实施例七提供的分布式图数据处理装置的结构示意图。该装置构成分布式图数据处理***中的主计算节点。此外,该装置可以通过软件、硬件或者软硬结合的方式实现,且该装置可以是单独的分布式图数据处理装置,也可以是集成了分布式图数据处理装置的其他设备,例如,可以是计算机。如图8所示,本实施例提供的分布式图数据处理装置,包括:获取模块300、第二判断模块400和第二处理模块500,其中,
获取模块300,用于从服务器中获取每个从计算节点发送的处理信息;其中,所述处理信息包括每个从计算节点在迭代处理的过程中发送的第一计算消息的个数和接收的第二计算消息的个数;
第二判断模块400,用于判断所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和是否相等;
第二处理模块500,用于在第二判断模块400判断所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和相等时,向每个所述从计算节点发送算法终止的控制命令。
本实施例的装置,可以用于执行图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (8)
1.一种分布式图数据处理方法,其特征在于,包括:
在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息,其中,所述目标从计算节点为接收所述第一从计算节点发送的第一计算消息的从计算节点;
若是,则执行下一轮迭代处理;
若判断没有接收到所述第二计算消息,则在接收到所述目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器;其中,所述处理信息包括所述第一从计算节点在迭代处理过程中发送的第一计算消息的个数以及接收的第二计算消息的个数。
2.根据权利要求1所述的方法,其特征在于,所述将迭代处理过程中的处理信息发送给服务器之后,所述方法还包括:
在等待接收主计算节点发送的控制命令的过程中,判断是否接收到所述第二从计算节点发送的第二计算消息;
若是,则执行下一轮迭代处理。
3.根据权利要求2所述的方法,其特征在于,在执行下一轮迭代处理之前,所述方法还包括:
向服务器发送删除命令,所述删除命令用于指示所述服务器删除所述处理信息;
向所述第二从计算节点发送回复响应。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照预设的分块的优先级对分块进行迭代处理;其中,优先级高的分块的活跃顶点的数目大于优先级低的分块的活跃顶点的数目。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
在第一从计算节点向目标从计算节点发送所述第一计算消息时,判断所述第一从计算节点的发送缓冲区的消息缓存量是否大于预设阈值;
若是,则停止发送所述第一计算消息。
6.一种分布式图数据处理方法,其特征在于,包括:
从服务器中获取每个从计算节点发送的处理信息;其中,所述处理信息包括所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数和接收的第二计算消息的个数;
判断所述每个从计算节点在迭代处理的过程中发送的第一计算消息的个数之和与所述每个从计算节点在迭代处理的过程中接收的第二计算消息的个数之和是否相等;
若是,则向每个所述从计算节点发送算法终止的控制命令。
7.一种分布式图数据处理装置,其特征在于,包括:第一判断模块和第一处理模块,其中,
所述第一判断模块,用于在第一从计算节点执行完本轮迭代处理,并且判断消息队列中不存在待处理的第二计算消息、以及判断当前处理的分块中不存在活跃顶点时,在等待接收目标从计算节点发送的回复响应的过程中,判断是否接收到第二从计算节点发送的第二计算消息,其中,所述目标从计算节点为接收所述第一从计算节点发送的第一计算消息的从计算节点;
所述第一处理模块,用于在所述第一判断模块判断在等待接收目标从计算节点发送的回复响应的过程中,接收到第二从计算节点发送的第二计算消息时,执行下一轮迭代处理;
所述第一处理模块,还用于在所述第一判断模块判断没有接收到所述第二计算消息时,则在接收到所述目标从计算节点发送的回复响应后,将迭代处理过程中的处理信息发送给服务器;其中,所述处理信息包括所述第一从计算节点在迭代处理过程中发送的第一计算消息的个数以及接收的第二计算消息的个数。
8.根据权利要求7所述的装置,其特征在于,所述第一判断模块,还用于在所述第一处理模块将迭代处理过程中的处理信息发送给服务器之后,在等待接收主计算节点发送的控制命令的过程中,判断是否接收到所述第二从计算节点发送的第二计算消息;
所述第一处理模块,还用于在所述第一判断模块判断在等待接收主计算节点发送的控制命令的过程中,接收到所述第二从计算节点发送的第二计算消息时,执行下一轮迭代处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710014047.7A CN106815080B (zh) | 2017-01-09 | 2017-01-09 | 分布式图数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710014047.7A CN106815080B (zh) | 2017-01-09 | 2017-01-09 | 分布式图数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106815080A CN106815080A (zh) | 2017-06-09 |
CN106815080B true CN106815080B (zh) | 2020-01-14 |
Family
ID=59110735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710014047.7A Active CN106815080B (zh) | 2017-01-09 | 2017-01-09 | 分布式图数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815080B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388733B (zh) * | 2018-08-13 | 2022-01-07 | 国网浙江省电力有限公司 | 一种面向图数据处理引擎的优化方法 |
CN110019253B (zh) * | 2019-04-18 | 2021-10-12 | 北京邮电大学 | 一种分布式的图数据序列采样方法及装置 |
CN110737804B (zh) * | 2019-09-20 | 2022-04-22 | 华中科技大学 | 一种基于活跃度布局的图处理访存优化方法及*** |
CN113496398A (zh) * | 2020-03-19 | 2021-10-12 | 中移(上海)信息通信科技有限公司 | 基于智能合约的数据处理方法、装置、设备及介质 |
CN113656426B (zh) * | 2021-10-20 | 2022-02-08 | 支付宝(杭州)信息技术有限公司 | 分布式数据处理方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914556A (zh) * | 2014-04-15 | 2014-07-09 | 西北工业大学 | 大规模图数据处理方法 |
CN105491117A (zh) * | 2015-11-26 | 2016-04-13 | 北京航空航天大学 | 面向实时数据分析的流式图数据处理***及方法 |
CN105677755A (zh) * | 2015-12-30 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种处理图数据的方法及装置 |
-
2017
- 2017-01-09 CN CN201710014047.7A patent/CN106815080B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103914556A (zh) * | 2014-04-15 | 2014-07-09 | 西北工业大学 | 大规模图数据处理方法 |
CN105491117A (zh) * | 2015-11-26 | 2016-04-13 | 北京航空航天大学 | 面向实时数据分析的流式图数据处理***及方法 |
CN105677755A (zh) * | 2015-12-30 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种处理图数据的方法及装置 |
Non-Patent Citations (1)
Title |
---|
分布式图计算框架混合计算模式的研究;丁鑫;《小型微型计算机***》;20150430;第36卷(第4期);第3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN106815080A (zh) | 2017-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106815080B (zh) | 分布式图数据处理方法和装置 | |
CN105656973B (zh) | 一种分布式节点组内任务调度方法及*** | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
US8918792B2 (en) | Workflow monitoring and control system, monitoring and control method, and monitoring and control program | |
US10338964B1 (en) | Computing node job assignment for distribution of scheduling operations | |
CN112019581B (zh) | 一种调度任务处理实体的方法及装置 | |
CN106656525B (zh) | 一种数据广播***、数据广播方法及设备 | |
CN107704310B (zh) | 一种实现容器集群管理的方法、装置和设备 | |
WO2024077881A1 (zh) | 神经网络训练的调度方法、***及计算机可读存储介质 | |
US10216593B2 (en) | Distributed processing system for use in application migration | |
CN110544159B (zh) | 一种地图信息处理方法、装置、可读存储介质和电子设备 | |
CN106775975B (zh) | 进程调度方法及装置 | |
CN114399228A (zh) | 任务调度方法及装置、电子设备和介质 | |
CN108228323B (zh) | 基于数据本地性的Hadoop任务调度方法及装置 | |
CN108833532B (zh) | 基于物联网的服务处理方法、装置和*** | |
CN112468317A (zh) | 一种集群拓扑更新方法、***、设备及计算机存储介质 | |
US20170180465A1 (en) | Method, information processing apparatuses and non-transitory computer-readable storage medium | |
CN114327819B (zh) | 一种任务管理方法、装置、设备及存储介质 | |
KR20210072956A (ko) | IoT 환경에서의 엣지 클라우드 컴퓨테이션 오프로딩 방법 | |
CN110750362A (zh) | 生物信息的分析方法、装置和存储介质 | |
CN110874189A (zh) | 存储***和存储控制方法 | |
EP3940536A1 (en) | Event stream processing method and event stream processing program | |
CN114884862A (zh) | 一种终端业务的处理方法和装置 | |
CN112395063B (zh) | 一种动态多线程调度方法及*** | |
CN112882940A (zh) | 用例任务调度方法、***、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |