图计算方法和系统与流程

文档序号:16207466发布日期:2018-12-08 07:17阅读:322来源:国知局
图计算方法和系统与流程

本申请涉及互联网技术领域,尤其涉及一种图计算方法和系统。

背景技术

图计算(graphcomputation)是以“图论”为基础对现实世界的一种“图”结构的抽象表达,以及在这种数据结构上的计算模式。图数据结构可以很好的表达数据之间的关联性(dependenciesbetweendata),在大数据时代,通过图计算可以从噪音很多的海量数据中抽取出有用的信息,比如:用户传播网络、用户的购买行为等。

相关技术中,通常采用批处理的方式进行图计算。批处理的方式在每次迭代时,都会将迭代结果落库到中间存储,下一次迭代任务启动时,再从中间存储中读取上一次的迭代结果进行计算。然而,每次迭代都落库到中间存储会造成巨大的性能消耗,还会导致计算时延,影响图计算的速率。



技术实现要素:

有鉴于此,本申请提供一种图计算方法和系统。

具体地,本申请是通过如下技术方案实现的:

一种图计算方法,包括:

计算节点接收上一轮节点发送的图数据,并根据所述上一轮节点发送的结束消息确定图数据是否已接收完毕;

计算节点若确定所述图数据已接收完毕,则根据所述图数据进行图计算,并在计算完成后检测其计算的顶点是否收敛;

计算节点在确定存在未收敛的顶点时,将未收敛顶点的计算结果发送给下一轮计算节点,并在发送完毕所述计算结果后向所述下一轮计算节点发送结束消息;

其中,所述上一轮节点包括:源节点、上一轮计算节点。

一种图计算系统,包括:源节点和计算节点;

其中,计算节点接收上一轮节点发送的图数据,并根据所述上一轮节点发送的结束消息确定图数据是否已接收完毕;

计算节点若确定所述图数据已接收完毕,则根据所述图数据进行图计算,并在计算完成后检测其计算的顶点是否收敛;

计算节点在确定存在未收敛的顶点时,将未收敛顶点的计算结果发送给下一轮计算节点,并在发送完毕所述计算结果后向所述下一轮计算节点发送结束消息;

其中,所述上一轮节点包括:所述源节点、上一轮计算节点。

由以上描述可以看出,本申请计算节点执行完本轮图计算后,若确定存在未收敛的顶点,则可将未收敛顶点的计算结果发送给下一轮计算节点,并在计算结果发送完毕后发送结束消息给下一轮计算节点,下一轮计算节点根据结束消息判断是否接收到上一轮迭代的所有计算结果,以继续进行迭代计算。整个迭代计算过程无需将计算结果落库到中间存储,节省了计算节点大量的处理性能,还可以提高图计算速率。

附图说明

图1是本申请一示例性实施例示出的一种图计算方法的流程示意图。

图2是本申请一示例性实施例示出的一种图计算系统的结构示意图。

图3是本申请一示例性实施例示出的一种结束消息传递示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1是本申请一示例性实施例示出的一种图计算方法的流程示意图。

请参考图1,所述图计算方法可以应用在图计算系统中,该图计算系统的物理载体可以为服务器或服务器集群,所述图计算方法可包括以下步骤:

步骤101,计算节点接收上一轮节点发送的图数据,并根据所述上一轮节点发送的结束消息确定图数据是否已接收完毕。

在本实施例中,图计算系统可以包括源节点和计算节点。其中,所述源节点可用于获取图计算任务的顶点信息和边信息,所述计算节点可以接收来自源节点或上一轮计算节点的图数据,并进行图计算处理。所述源节点和计算节点的数量都可以为多个。

具体地,图计算是一个迭代计算的过程,本申请所述上一轮计算节点指的是上一次进行迭代计算的计算节点,与本轮计算节点可能是同一个计算节点,也可能是不同的计算节点,本申请对此不作特殊限制。

在本实施例中,源节点或上一轮计算节点在将本次图数据发送完毕后,可以发送结束消息,本轮计算节点可以根据所述结束消息判断图数据是否发送完毕。

在本实施例中,当所述上一轮节点是源节点时,所述图数据包括:源节点加载的顶点信息和边信息;当所述上一轮节点是上一轮计算节点时,所述图数据包括:上一轮计算节点发送的未收敛顶点的计算结果。

步骤102,计算节点若确定所述图数据已接收完毕,则根据所述图数据进行图计算,并在计算完成后检测其计算的顶点是否收敛。

步骤103,计算节点在确定存在未收敛的顶点时,将未收敛顶点的计算结果发送给下一轮计算节点,并在发送完毕所述计算结果后向所述下一轮计算节点发送结束消息。

在本实施例中,下一轮计算节点在接收到所有本轮计算节点发送的结束消息时,可以确定已接收到本轮处理后的所有计算结果,进而可以根据接收到计算结果继续进行图计算,并在计算完成后检测其计算的顶点是否收敛,直至本次图计算的所有计算节点均确认顶点收敛。

由以上描述可以看出,本申请计算节点执行完本轮图计算后,若确定存在未收敛的顶点,则可将未收敛顶点的计算结果发送给下一轮计算节点,并在计算结果发送完毕后发送结束消息给下一轮计算节点,下一轮计算节点根据结束消息判断是否接收到上一轮迭代的所有计算结果,以继续进行迭代计算。整个迭代计算过程无需将计算结果落库到中间存储,节省了计算节点大量的处理性能,还可以提高图计算速率。

下面结合具体的实施例来描述本申请的实现过程。

在本实施例中,可将图计算系统划分为3种系统角色,分别为:触发器、源节点以及计算节点。请参考图2所示的图计算系统,该图计算系统包括1个触发器、2个源节点和3个计算节点。

其中,触发器可以是一个进程,用于触发图计算任务,其触发逻辑可以由用户自行设置,比如:可以触发单个图计算任务,也可以一次性触发多个并行的图计算任务;就触发时机而言,可以根据用户的指示触发,也可以定时触发等,本申请对此不作特殊限制。

触发器在确定图计算任务被触发时,可以将本次图计算任务的计算信息发送给源节点。其中,所述计算信息通常由用户设置,包括有本次图计算任务的相关描述。可选的,触发器可以将所述计算信息发送至所有源节点,也可以根据用户的设置将所述计算信息发送至部分源节点。

源节点在接收到触发器发送的计算信息后,可以从外部加载本次图计算所需要使用的数据,在图计算领域,可以将加载到的数据抽象为顶点信息和边信息,其中,所述顶点信息包括:顶点id和顶点的属性值,所述边信息包括:起始顶点、结束顶点以及边上的属性值等。

结合实际的应用场景,以用户的购买行为为例,有两类顶点,分别为:用户和产品,边是购买行为。顶点的id可以为用户id和产品id,顶点的属性值可以为:用户年龄、用户性别、产品分类等。边的属性值可以为购买次数、购买时间等。当然,不同应用场景顶点和边的意义也有所不同,具体可以参考相关技术中。

针对加载到的顶点信息和边信息,源节点可以将其分发给计算节点,为提高吞吐量,源节点可以一边加载一边分发。源节点分发顶点信息和边信息的策略也可以由用户进行设置,比如:源节点可以按照顶点id取模,然后将相关信息发送的取模值对应的计算节点,并可以在相关信息发送完毕后向该计算节点发送结束消息。举例来说,假设顶点a的id取模为1,那么可以将顶点a的顶点信息以及顶点a的出度边的信息发送给计算节点1。

计算节点接收源节点发送的顶点信息和边信息,然后根据结束消息判断上述信息是否发送完毕,若确定已发送完毕,可以根据接收到的顶点信息和边信息进行图计算,即计算节点进行第一次迭代计算。

计算节点执行完本轮计算后,可以检测其计算的顶点是否收敛。假设,计算节点计算10个顶点,那么计算节点可以依次检测其计算的这10个顶点是否收敛。

举例来说,仍以用户的购买行为为例,在一个例子中,根据计算结果,计算节点可以检测是否已经不存在用户1购买过的产品,若不存在则可以确定用户1收敛。在另一个例子中,根据计算结果,假设仍存在用户1购买过的产品,但是用户的购买时间距今的时长超过预设时长,则也可以确定用户1收敛。当然,在实际应用中,还可以采用其他的实现方式检测顶点是否收敛,比如:用户1的某些属性值满足预设条件等,具体可以参照相关技术中的实现方式进行设置,本申请在此不再一一赘述。

计算节点若确定存在未收敛的顶点,则可以将未收敛顶点的计算结果发送给下一轮计算节点,以进行下一次迭代计算。比如:计算节点1可以根据前述收敛检测中用户1购买的产品的id取模值将用户1的计算结果发送给计算节点2。当然,在实际应用中,请继续参考图2,确定出的下一轮计算节点可能还是计算节点1其自身。

与源节点类似,计算节点在计算结果发送完毕后,也可以发送结束消息给下一轮计算节点,以供下一轮计算节点判断是否已接收到所有计算结果,从而确保数据的准确性。此外,计算节点若确定其计算的所有顶点都收敛,可以直接发送结束消息给下一轮计算节点。

请参考图3的示例,假设,计算节点1、计算节点2以及计算节点3执行第n次迭代计算,计算节点4、计算节点5以及计算节点6执行第n+1次迭代计算。计算节点1、计算节点2以及计算节点3在进行完第n次迭代的计算后均确定存在未收敛的顶点,则可以将未收敛顶点的计算结果发送给计算节点4、计算节点5以及计算节点6中相应的计算节点,并可以在计算结果发送完毕后再发送结束消息。

对于执行第n+1次迭代计算的计算节点,以计算节点4为例,其在接收到计算节点1、计算节点2以及计算节点3发送的结束消息后,可以确定已接收到第n次迭代计算所产生的所有计算结果,进而可以根据接收到的计算结果进行第n+1次迭代计算。若计算节点4未接收到计算节点3发送的结束消息,则可以确定接收到的计算结果不全,继续等待。

可选的,在一个例子中,计算节点可以在上述结束消息中携带未收敛顶点的数量。仍假设,计算节点1计算10个顶点,经检测这10个顶点中有2个顶点收敛,8个顶点未收敛,则计算节点1可以在将8个未收敛顶点的计算结果发送给下一轮计算节点后,发送未收敛顶点数量为8的结束消息给下一轮计算节点。若计算节点1经检测确定这10个顶点都收敛,那么可以发送未收敛顶点数量为0的结束消息给下一轮计算节点。

对于计算节点而言,若在确定上一轮所有计算节点发送的结束消息携带的未收敛顶点数量均是零时,则可以确定完成图计算。请继续参考图3,若计算节点4接收到的计算节点1、计算节点2以及计算节点3发送的结束消息携带的未收敛顶点数量都是0时,可以确定完成图计算。

可选的,在一个例子中,本申请提供的图计算方法可以支持多图计算的资源共享。具体地,源节点和计算节点可以在结束消息中添加图计算任务id,使得计算节点根据图计算任务id区分图计算任务。

举例来说,假设触发器并行触发图计算任务1和图计算任务2,那么计算节点可以根据图计算任务id将接收到的计算结果和结束消息进行区分,比如:针对图计算任务1,若接收所有上一轮计算节点发送的结束消息,则可以开始执行图计算任务1的本轮迭代计算。

本申请在实现并行图计算任务时,可以通过在结束消息中添加图计算任务id的方式,实现设备cpu、内存等物理资源的共享。相较于相关技术中批处理需要为每个图计算任务分别配置cpu、内存等物理资源的实现方式,可以大大设备的物理资源,避免资源浪费。

与前述图计算方法的实施例相对应,本申请还提供了图计算系统的实施例。

所述图计算系统可以包括:源节点以及计算节点。

其中,计算节点接收上一轮节点发送的图数据,并根据所述上一轮节点发送的结束消息确定图数据是否已接收完毕;

计算节点若确定所述图数据已接收完毕,则根据所述图数据进行图计算,并在计算完成后检测其计算的顶点是否收敛;

计算节点在确定存在未收敛的顶点时,将未收敛顶点的计算结果发送给下一轮计算节点,并在发送完毕所述计算结果后向所述下一轮计算节点发送结束消息;

其中,所述上一轮节点包括:所述源节点、上一轮计算节点。

可选的,所述结束消息中携带未收敛顶点的数量;

所述计算节点若确定其计算的所有顶点都收敛,则发送未收敛顶点数量是零的结束消息给下一轮计算节点;

计算节点在确定所有上一轮计算节点发送的结束消息携带的未收敛顶点数量均是零时,确定完成图计算。

可选的,图计算系统还包括:触发器;

所述触发器在确定图计算任务被触发时,将本次图计算任务的计算信息发送给所述源节点;

所述源节点根据所述计算信息获取本次图计算任务的顶点信息和边信息;

所述源节点根据预设的分发策略将所述顶点信息和所述边信息分发给计算节点进行计算。

可选的,所述结束消息中携带图计算任务id,以供计算节点区分图计算任务。

可选的,当所述上一轮节点是源节点时,所述图数据包括:顶点信息、边信息;

当所述上一轮节点是上一轮计算节点时,所述图数据包括:未收敛顶点的计算结果。

上述系统中各个节点的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的触发器、节点可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部节点来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述实施例阐明的系统,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1