CN113489790A - 一种优化分布式PageRank算法通信过程的方法及装置 - Google Patents
一种优化分布式PageRank算法通信过程的方法及装置 Download PDFInfo
- Publication number
- CN113489790A CN113489790A CN202110763995.7A CN202110763995A CN113489790A CN 113489790 A CN113489790 A CN 113489790A CN 202110763995 A CN202110763995 A CN 202110763995A CN 113489790 A CN113489790 A CN 113489790A
- Authority
- CN
- China
- Prior art keywords
- point
- vertex
- energy value
- edge
- computing node
- 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.)
- Granted
Links
- 230000006854 communication Effects 0.000 title claims abstract description 155
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 48
- 238000004891 communication Methods 0.000 claims abstract description 122
- 238000005192 partition Methods 0.000 claims abstract description 118
- 238000004364 calculation method Methods 0.000 claims abstract description 91
- 230000008569 process Effects 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 abstract description 14
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及图计算技术领域,提供了一种优化分布式PageRank算法通信过程的方法及装置,方法包括:依据分区计算将全图中的顶点和边划分给相应计算节点;其中,完成划分的顶点称为相应计算节点的主点,完成划分的边的一个顶点与边归属于相同的计算节点,若另一个顶点与边归属于不同的计算节点,则在所述相同的计算节点中创建与所述另一顶点对应的虚点;遍历各个计算节点中的主点,计算主点的PageRank值;将主点的预设比例的PageRank值通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点;迭代计算和网络通信直到满足停止迭代的预设条件;本发明对现有算法的存储消耗和通信次数进行了优化,缩短了整体计算所需的时间,提高了算法运行效率。
Description
技术领域
本发明涉及图计算技术领域,尤其涉及一种优化分布式PageRank算法通信过程的方法及装置。
背景技术
BSP计算模型(全称为:Bulk Synchronous Parallel Computing Model),中文描述为整体同步并行计算模型。BSP计算模型不仅是一种体系结构模型,也是设计并行程序的一种方法。BSP程序设计准则是整体同步(bulk synchrony),其独特之处在于超步(superstep)概念的引入。一个BSP程序同时具有水平和垂直两个方面的结构。从垂直上看,一个BSP程序由一系列串行的超步组成。从水平上看,在一个超步中,所有的进程并行执行局部计算。如图1所示,一个超步可分为三个阶段:
第一个阶段,本地计算阶段,每个处理器只对存储本地内存中的数据进行本地计算。
第二个阶段,全局通信阶段,对任何非本地数据进行操作。
第三个阶段,栅栏同步阶段,等待所有通信行为的结束。
最后一个超步完成,即是一个BSP程序的计算完成。
PageRank算法,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。PageRank作为一种图计算算法,常被用于图数据库领域。
PowerLyra算法,是一种混合点分割方案,通过设置一个θ值,将全图中的顶点按照出度或者入度是否≥θ指定为高度点,否则为低度点,根据边的终点是否为高度点来选择high-cut或者low-cut,high-cut按照边起点的hash值将边划分到指定分区,low-cut按照边终点的hash值将边划分到指定分区,根据点的度,混合点分割分为以下几个阶段:
第一阶段,遍历所有点,按照点的hash值将点分到不同的分区。
第二阶段,选定出度或者入度,将点分为高度或者低度点。
第三阶段,遍历所有边,将边按照high-cut或low-cut划分到相对应的分区。
根据PowerLyra算法完成点分割后,每个计算节点的数据具有以下性质:一条边上的两个点可以同时是主点或一个主点一个虚点,但是不可能同时为虚点。
目前,随着大数据时代的到来,单机的图计算已经无法完成对海量图数据的计算,伴随着分布式图计算的发展,基于PowerLyra算法和BSP计算模型的分布式PageRank算法遇到了海量通信的压力,传统的计算方式是主点和虚点并行计算:
如图2所示,在计算阶段,计算节点1和计算节点2中的所有主点和虚点同时开始计算;以顶点4为例,计算节点1的虚点4’会收到主点1的能量,记为E1,计算节点2的主点4收到的能量记为E2,虽然在本图中计算节点2的主点4没有收到能量,待每个计算节点的所有顶点计算完毕后,进入网络通信阶段,如图2中的虚线1所示,计算节点1的虚点4’会把能量E1发送给计算节点2的主点4,如图2中的虚线2所示,计算节点2主点4收到传递能量值后进行聚合,聚合后的计算节点2的主点4的能量值E(4)=E1+E2,然后,计算节点2的主点4将E(4)发送给计算节点1的虚点4’,虚点接收能量值并同步更新自身的能量值为E(4),待当前轮所有主点和虚点的计算和通信完成后,开启下一轮计算。
传统的计算方式中,主点和虚点都需要存储每轮的PageRank值;在网络通信阶段,虚点收集完能量发给主点聚合,主点聚合自身和虚点的能量值,将最终的能量值发回给虚点,进行主点和与主点对应的虚点的数据同步交换,用于下一轮计算。
总而言之,基于该方式的分布式PageRank算法,在计算阶段,主点和虚点都参与计算,其中,主点和虚点均需存储计算数据;在网络通信阶段,当前计算节点需要通过两次网络通信完成与其他计算节点之间的数据同步交换,即计算节点之间需要进行两次数据传输;伴随着图数据量的提升,现有的分布式PageRank算法额外消耗的计算资源和网络通信成本会更加巨大。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明要解决的技术问题是:
目前大多使用分布式PageRank算法对图顶点的重要性进行排序;在计算过程中,全图的主点和虚点都需要参与传递能量值计算,增加计算资源的消耗;在能量传送过程中,需要进行两次网络通信,伴随着图数据量的提升,现有的分布式PageRank算法增加了网络通信开销,延长了整体计算时间。
为实现上述目的,本发明采用如下技术方案:
第一方面,本发明提供了一种优化分布式PageRank算法通信过程的方法,包括:依据分区计算将全图中的顶点和边划分给相应计算节点;其中,完成划分的顶点称为相应计算节点的主点,完成划分的边的一个顶点与边归属于相同的计算节点,若另一个顶点与边归属于不同的计算节点,则在所述相同的计算节点中创建与所述另一顶点对应的虚点;
遍历各个计算节点中的主点,计算主点的PageRank值;将主点的预设比例的PageRank值通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点;
迭代计算和网络通信直到满足停止迭代的预设条件。
优选的,所述依据分区计算将全图中的顶点和边划分给相应计算节点,包括:
赋予每个计算节点一个分区号,每个计算节点遍历全图中的顶点和边;
若计算出来的顶点的分区号与当前计算节点的分区号相同,则将相应的顶点划分到当前计算节点中,相应的顶点作为当前计算节点中的主点;
若计算出来的边的分区号与当前计算节点的分区号相同,则将相应的边划分到当前计算节点中,相应的边用于进行当前计算节点内的主点与主点,或者主点与虚点之间的通信。
优选的,全图中各顶点的分区号由顶点的hash值对分区数量取模运算得到;全图中各边的分区号的计算过程包括:根据当前顶点的出点的数量是否大于预设数量判断当前顶点为高度点还是低度点;若边的终点为高度点,则根据相应边的起点的hash值对分区数量取模运算得到相应边的分区号;若边的终点为低度点,则根据相应边的终点的hash值对分区数量取模运算得到边的分区号;
其中,所述当前顶点的出点的数量为在全图中与当前顶点通过边相连的用于接收所述当前顶点发送的能量值的其他顶点的数量;在一条边的两个顶点中,用于发送能量值的顶点为边的起点,用于接收能量值的顶点为边的终点。
优选的,当前轮计算得到的相应主点的PageRank值由第一部分与第二部分相加所得;其中,第一部分来源于上一轮与主点有对应关系的其他计算节点中的主点发送给相应主点的能量值,第二部分来源于上一轮全局能量池中的能量值与全图顶点数相除得到的值。
优选的,网络通信阶段包括:
主点将待发送的能量值携带在网络通信消息中发送给主点所归属的计算节点中的与主点通过边相连的用于接收主点发送的能量值的虚点,相应虚点将接收到的能量值传递给与相应虚点对应的其他计算节点中的主点;
主点将待发送的能量值携带在网络通信消息中发送给与主点有对应关系的其他计算节点中的虚点,相应虚点将接收到的能量值传递给相应虚点所归属的计算节点中的与相应虚点通过边相连的用于接收相应虚点发送的能量值的主点。
优选的,网络通信消息中还包括与主点有对应关系的其他计算节点的分区号,依据分区号到IP地址的映射关系,主点将待发送的能量值向与主点有对应关系的其他计算节点中的主点或虚点进行发送。
优选的,所述迭代计算和网络通信直到满足停止迭代的预设条件,包括:
一轮计算和网络通信完成后,若对当前轮各主点的PageRank值与上一轮相应各主点的PageRank值的差值的绝对值求和得到的值小于给定值,或者,当前轮数大于给定轮数,则停止迭代;
否则,继续迭代计算和网络通信。
优选的,在迭代计算的过程中,各个计算节点中的主点和/或虚点对接收的网络通信消息进行处理时,若接收的网络通信消息中携带的迭代轮数大于当前轮,则对接收的网络通信消息进行阻塞;若接收的网络通信消息中携带的迭代轮数等于当前轮,则对接收的网络通信消息中待累加和待传递的能量值进行相应的处理。
优选的,所述与主点有对应关系的其他计算节点中的主点或虚点,其中:
与主点有对应关系的其他计算节点中的主点为:在全图中与主点通过边相连的用于接收主点发送的能量值且与主点归属于不同的计算节点的其他顶点;
与主点有对应关系的其他计算节点中的虚点为:若在计算节点中与主点通过边相连的用于接收主点发送的能量值的其他主点或虚点的数量之和小于在全图中与相应主点通过边相连的用于接收相应主点发送的能量值的其他顶点的数量,则在与相应主点归属的计算节点不同的其他顶点所归属的计算节点中创建与相应主点对应的虚点。
第二方面,本发明提供了一种优化分布式PageRank算法通信过程的装置,用于实现第一方面所述的优化分布式PageRank算法通信过程的方法,优化分布式PageRank算法通信过程的装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行第一方面所述的优化分布式PageRank算法通信过程的方法。
与现有技术相比,本发明的有益效果是:
本发明通过将主点做为计算节点,用于保存计算数据,将虚点仅做为通信节点,仅用于传递能量值,使计算过程中全图的虚点不用参与计算,节省计算资源,且在能量值传送过程中只需要一次网络通信,每个计算节点只需要处理发送过来的数据;本发明对现有算法的存储消耗和通信次数进行了优化,缩短了整体计算所需的时间,提高了算法运行效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中BSP计算模型的超步示意图;
图2是现有技术中分布式PageRank算法通信过程的方法的通信示意图;
图3是本发明实施例提供的一种优化分布式PageRank算法通信过程的方法的流程示意图;
图4是本发明实施例提供的一种优化分布式PageRank算法通信过程的方法中的计算集群的分布式结构示意图;
图5是本发明实施例提供的一种优化分布式PageRank算法通信过程的方法的超大图示意图;
图6是本发明实施例提供的一种优化分布式PageRank算法通信过程的方法的通信示意图;
图7是本发明实施例提供的一种优化分布式PageRank算法通信过程的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例提供了一种优化分布式PageRank算法通信过程的方法,如图3所示,包括:
在步骤201中,依据分区计算将全图中的顶点和边划分给相应计算节点。
其中,完成划分的顶点称为相应计算节点的主点,完成划分的边的一个顶点与边归属于相同的计算节点,完成划分的边的另一个顶点与边可能归属于相同的计算节点,也可能归属于不同的计算节点;若完成划分的边的另一个顶点也与边归属于相同的计算节点,则所述边用于进行所述相同计算节点内的主点与主点的通信;若完成划分的边的另一个顶点与边归属于不同的计算节点,则在所述相同的计算节点中创建与所述另一顶点对应的虚点,所述边用于进行所述相同计算节点内的主点与虚点的通信。
在步骤202中,计算阶段包括:遍历各个计算节点中的主点,计算主点的PageRank值。
其中,各个计算节点中的虚点不参与PageRank值的计算,只负责能量值的传递。
每轮计算得到的主点的PageRank值的一部分来源于上一轮与主点有对应关系的其他计算节点中的主点发送给相应主点的能量值,另一部分来源于上一轮全局能量池中的能量值与全图顶点数相除得到的值。
在步骤203中,网络通信阶段包括:将主点的预设比例的PageRank值通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点。
其中,主点的预设比例的PageRank值包括需要发送给与主点有对应关系的其他计算节点中的主点的能量值和需要发送给与主点有对应关系的其他计算节点中的虚点的能量值。
所述通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点的过程包括:将主点需要发送给与主点有对应关系的其他计算节点中的主点的能量值以及相应的其他计算节点的IP地址保存在主点所归属的计算节点的暂存消息盒中,将主点需要发送给与主点有对应关系的其他计算节点中的虚点的能量值以及相应的其他计算节点的IP地址同样保存在主点所归属的计算节点的暂存消息盒中;待各个计算节点中的主点的PageRank值计算完成后,进入网络通信阶段,各个计算节点根据各自的暂存消息盒中的每条网络通信消息所指向的相应计算节点的IP地址,将网络通信消息分别发送给与主点有对应关系的其他计算节点中的主点或虚点。
步骤203中的网络通信消息发送完成后,进入通信消息处理阶段:各个计算节点中的主点或虚点对接收到的网络通信消息进行相应的处理;其中,各个计算节点中的主点对接收的能量值进行求和,各个计算节点中的虚点只负责按照相应计算节点中的边进行接收的能量值的传递。
所述各个计算节点中的主点对接收的能量值进行求和,其中,接收的能量值包括从网络通信消息中获取的能量值和从本地通信消息中获取的能量值,本地通信消息具体为:当计算节点中的边用于进行相应计算节点内的主点与主点的通信时,所述相应计算节点内的主点与主点的通信即为本地通信,本地通信消息保存在相应计算节点的本地通信盒中。
在步骤204中,迭代计算和网络通信直到满足停止迭代的预设条件;其中,每轮中包括上述的计算阶段、网络通信阶段和通信消息处理阶段。
所述停止迭代的预设条件包括:一轮计算和网络通信完成后,对当前轮各主点的PageRank值与上一轮相应各主点的PageRank值的差值的绝对值求和得到的值小于给定值,或者,当前轮数大于给定轮数。
所述对当前轮各主点的PageRank值与上一轮相应各主点的PageRank值的差值的绝对值求和得到的值称为当前轮全图的收敛值。
在本发明实施例中,所述依据分区计算将全图中的顶点和边划分给相应计算节点,包括:
赋予每个计算节点一个分区号,每个计算节点遍历全图中的顶点和边;
若计算出来的顶点的分区号与当前计算节点的分区号相同,则将相应的顶点划分到当前计算节点中,相应的顶点作为当前计算节点中的主点;
若计算出来的边的分区号与当前计算节点的分区号相同,则将相应的边划分到当前计算节点中,相应的边用于进行当前计算节点内的主点与主点,或者主点与虚点之间的通信。
其中,完成划分的边的两个顶点的分区号可能相同,也可能不同。
当完成划分的边的两个顶点的分区号相同时,即完成划分的边的两个顶点的分区号所对应的计算节点与完成划分的边的分区号所对应的计算节点相同,及完成划分的边的两个顶点和完成划分的边均属于同一个计算节点,此时的边用于进行所述同一个计算节点内的主点与主点之间的通信。
当完成划分的边的两个顶点的分区号不同时,即完成划分的边的一个顶点的分区号与完成划分的边的分区号相同,完成划分的边的另一个顶点与完成划分的边的分区号不同,也就是在完成划分的边的另一个顶点不属于完成划分的边的分区号所对应的计算节点的情况下,需要在完成划分的边的分区号所对应的计算节点中创建与所述完成划分的边的另一顶点对应的虚点,此时的边用于进行所述完成划分的边的分区号所对应的计算节点内的主点与虚点之间的通信。
综上,各个计算节点内除了全图中的顶点以外,可能还包括用于通信而创建的虚点,各个计算节点内的边只会以主点和主点以及主点和虚点这两种组合形式出现,不会出现虚点和虚点的这一组合形式。
在本发明实施例中,全图中各顶点的分区号由顶点的hash值对分区数量取模运算得到;全图中各边的分区号的计算过程包括:根据当前顶点的出点的数量是否大于预设数量判断当前顶点为高度点还是低度点;若边的终点为高度点,则根据相应边的起点的hash值对分区数量取模运算得到相应边的分区号;若边的终点为低度点,则根据相应边的终点的hash值对分区数量取模运算得到边的分区号。
其中,所述当前顶点的出点的数量为在全图中与当前顶点通过边相连的用于接收所述当前顶点发送的能量值的其他顶点的数量;在一条边的两个顶点中,用于发送能量值的顶点为边的起点,用于接收能量值的顶点为边的终点;所述预设数量为预先设定的顶点的出点数量,所述预设数量可根据实际情况进行调整。
在本发明实施例中,当前轮计算得到的相应主点的PageRank值由第一部分与第二部分相加所得;其中,第一部分来源于上一轮与主点有对应关系的其他计算节点中的主点发送给相应主点的能量值,第二部分来源于上一轮全局能量池中的能量值与全图顶点数相除得到的值。
以当前轮全局能量池中的能量值的来源为例对全局能量池进行说明,当前轮全局能量池中的能量值包括:取上一轮计算得到的相应主点的第一比例的PageRank值放入全局能量池中;在相应主点在全图中的出点的数量为0时,将上一轮计算得到的相应主点的余下比例的PageRank值也放入全局能量池中。
其中,每轮计算得到的全局能量池中的能量值相互独立,用于计算下一轮相应主点的PageRank值。
所述第一比例可以根据实际需求进行调整,可以是50%、75%或90%等比例,当第一比例取75%时,相应的余下比例为25%。
在本发明实施例中,网络通信阶段包括:
主点将待发送的能量值携带在网络通信消息中发送给主点所归属的计算节点中的与主点通过边相连的用于接收主点发送的能量值的虚点,相应虚点将接收到的能量值传递给与相应虚点对应的其他计算节点中的主点;
主点将待发送的能量值携带在网络通信消息中发送给与主点有对应关系的其他计算节点中的虚点,相应虚点将接收到的能量值传递给相应虚点所归属的计算节点中的与相应虚点通过边相连的用于接收相应虚点发送的能量值的主点。
待发送的能量值具体为:在相应主点在全图中的出点的数量大于0时,通过上一轮计算得到的相应主点的余下比例的PageRank值和相应主点在全图中的出点的数量相除得到的值。
在本发明实施例中,网络通信消息中还包括与主点有对应关系的其他计算节点的分区号,依据分区号到IP地址的映射关系,主点将待发送的能量值向与主点有对应关系的其他计算节点中的主点或虚点进行发送。
其中,所述网络通信消息的载体为暂存消息盒,暂存消息盒中包括主点的待发送的能量值和用于接收主点发送的能量值的与主点有对应关系的其他计算节点中的主点或虚点所在的分区号,通过所述分区号到IP地址的一一对应的映射关系,将主点的待发送的能量值发送给与主点有对应关系的其他计算节点中的主点或虚点;例如,可以按照key=与主点有对应关系的主点或虚点所在的计算节点的分区号,Values=主点的待发送的能量值,依据分区号到计算节点IP的映射关系,计算节点之间互相发送暂存消息盒中的Values。
同样的,全图中顶点的出点和相应出点的数量、计算节点中与主点有对应关系的主点或虚点、与主点对应的虚点所在计算节点的分区号均可以使用数据结构进行保存后方便进行计算和通信,例如,通过Vertex<ID,Value>数据结构保存全图中的顶点和相应的顶点的出点的数量;其中,ID为全图中的顶点的唯一ID,Value为相应的顶点的出点的数量;通过Map<Vertex,List<Vertex>>数据结构保存全图中的顶点和相应的顶点的出点;其中,Vertex为上述保存全图中的顶点和相应顶点的出点的数量的数据结构,List<Vertex>为相应的顶点的出点;通过Map<Vertex,Value>数据结构保存主点和与主点对应的虚点所在计算节点的分区号;其中,Vertex为上述保存全图中的顶点和相应顶点的出点的数量的数据结构,Value为虚点所在计算节点的分区号。
在本发明实施例中,所述迭代计算和网络通信直到满足停止迭代的预设条件,包括:
一轮计算和网络通信完成后,若对当前轮各主点的PageRank值与上一轮相应各主点的PageRank值的差值的绝对值求和得到的值小于给定值,或者,当前轮数大于给定轮数,则停止迭代;
否则,继续迭代计算和网络通信。
其中,所述对当前轮各主点的PageRank值与上一轮相应各主点的PageRank值的差值的绝对值求和得到的值称为当前轮全图的收敛值;其中,当前轮各主点的PageRank值减去上一轮相应主点的PageRank值并取绝对值作为相应主点的收敛值;当前计算节点对当前计算节点中的所有主点的收敛值求和得到当前计算节点的收敛值,其他计算节点对其他计算节点中的所有主点的收敛值求和得到相应其他计算节点的收敛值;各个计算节点仅需完成自身收敛值的计算后接收其他计算节点已经累加好的所有主点的收敛值并求和即可得到当前轮全图总的收敛值;根据当前轮全图总的收敛值是否小于给定值,或者,当前轮数是否大于给定轮数,判断是否还需进行下一轮计算和网络通信;所述给定值可以根据实际需求进行调整,可以是0.00001、0.0001或0.001等。
若满足停止迭代的预设条件,则所有计算节点进行下一轮计算;否则,停止迭代并返回最后一轮所有主点的PageRank值,依据最后一轮所有主点的PageRank值的大小进行全图中的顶点的重要性排序。
在本发明实施例中,为了保证计算的准确性,各个计算节点的迭代轮数必须保持一致,因此在迭代计算的过程中,各个计算节点中的主点和/或虚点对接收的网络通信消息进行处理时,若接收的网络通信消息中携带的迭代轮数大于当前轮,则对接收的网络通信消息进行阻塞;若接收的网络通信消息中携带的迭代轮数等于当前轮,则对接收的网络通信消息中待累加和待传递的能量值进行相应的处理。
其中,所述待累加的能量值为主点接收的网络通信消息中的能量值,所述待传递的能量值为虚点接收的网络通信消息中的能量值。
在本发明实施例中,所述与主点有对应关系的其他计算节点中的主点或虚点,其中:
与主点有对应关系的其他计算节点中的主点为:在全图中与主点通过边相连的用于接收主点发送的能量值且与主点归属于不同的计算节点的其他顶点;
与主点有对应关系的其他计算节点中的虚点为:若在计算节点中与主点通过边相连的用于接收主点发送的能量值的其他主点或虚点的数量之和小于在全图中与相应主点通过边相连的用于接收相应主点发送的能量值的其他顶点的数量,则在与相应主点归属的计算节点不同的其他顶点所归属的计算节点中创建与相应主点对应的虚点。
实施例2:
本发明实施例以图4所示的超大图为例,对优化分布式PageRank算法通信过程的方法进行具体说明,如图5所示,计算集群的主节点接收任务并分发任务给计算节点1和计算节点2;计算节点1和计算节点2根据任务参数创建PageRank算法并根据自身分区号进行数据加载,所述任务参数包含必传参数和选传参数;其中,必传参数具体包括:algorithm(算法名,PageRank为pr)和graphName(图名);选传参数具体包括:alpha(能量因子,默认0.85)、epsilon(收敛值,默认0.00001)、iterations(迭代次数,默认20)、top(前top个结果,默认100))或checkTop(是否检测top值,默认true)中的一项或多项,加载完后的计算所需数据包括上述实施例1中所述的Map<Vertex,List<Vertex>>和Map<Vertex,Value>,分区加载的具体流程如下:
赋予每个计算节点一个分区号,如图6和表1,计算节点1的分区号初始化为1,计算节点2的分区号初始化为0。
计算节点1和计算节点2遍历全图中的顶点,由顶点的hash值对分区数量取模运算得到全图中各顶点的分区号,根据分区号将顶点进行划分,若计算出来的顶点的分区号与当前计算节点的分区号相同,则将相应的顶点划分到当前计算节点中,相应的顶点作为当前计算节点的主点,将相应的顶点保存到当前计算节点的数据结构中。
计算节点1遍历全图中的顶点;对于顶点1:顶点1的hash值取顶点1的ID,因此顶点1的hash值为1,分区数量为2,由顶点1的hash值对分区数量取模运算得到顶点1的分区号为1,因此将顶点1划分给分区号1所对应的计算节点1,顶点1作为计算节点1中的主点;计算节点1继续遍历顶点2、顶点3、顶点4、顶点5和顶点6。
计算节点2遍历全图中的顶点,完成全图中顶点的划分;全图中的顶点完成划分后的分布情况见表1。
如表1所示,顶点1、顶点3和顶点5划分给计算节点1作为主点,顶点2、顶点4和顶点6划分给计算节点2作为主点。
在保存主点的过程中查询相应主点的出点的数量,根据在全图中相应主点的出点的数量是否大于预设数量判断相应顶点为高度点还是低度点;同时通过Vertex<ID,VALUE>数据结构保存主点和相应主点的出点数量,其中,ID为全图中的顶点的唯一ID,Value为相应的顶点的出点的数量;所述预设数量θ的取值范围一般在100-200之间;由于图4是实施例示意图,仅有6个顶点,因此图4所示的超大图中,预设数量θ的取值为3,则图4中的高度点为顶点4,低度点包括顶点1、顶点2、顶点3、顶点5和顶点6。
计算节点1和计算节点2遍历全图中的边,在一条边的两个顶点中,用于发送能量值的顶点为边的起点,用于接收能量值的顶点为边的终点;若边的终点为高度点,则根据相应边的起点的hash值对分区数量取模运算得到相应边的分区号;若边的终点为低度点,则根据相应边的终点的hash值对分区数量取模运算得到边的分区号。
遍历全图中的边,对于边1->2,由于终点对应的顶点2为低度点,因此根据相应边的终点的hash值对分区数量取模运算得到边的分区号,即根据顶点2的hash值2对分区数量2取模运算得到边的分区号为0,将边1->2划分给分区号0所对应的计算节点2;由于顶点1不属于计算节点2,因此在计算节点2中创建对应顶点1的虚点1’,在计算节点2中边1->2表示为1’->2;计算节点2会将虚点1’和分区号0发送到计算节点1,保证计算节点1中的顶点1知道自己的虚点以及虚点所在的计算节点的分区号。
对于边1->4,由于终点对应的顶点4为高度点,因此根据相应边的起点的hash值对分区数量取模运算得到边的分区号,即根据顶点1的hash值1对分区数量2取模运算得到边的分区号为1,将边1->4划分给分区号1所对应的计算节点1;由于顶点4不属于计算节点1,因此在计算节点1中创建对应顶点4的虚点4’,在计算节点1中边1->4表示为1->4’;计算节点1会将虚点4’和分区号1发送到计算节点2,保证计算节点2中的顶点4知道自己的虚点以及虚点所在的计算节点的分区号。
继续对其他边进行划分,最终完成全图中边的划分,全图中的边完成划分后的分布情况见表1。
如表1所示,边1->4’、边4’->3和边4’->5划分给计算节点1,边1’->2、边4->6划分给计算节点2。
表1:
完成对全图中的顶点和边的划分后,进入计算阶段,遍历各个计算节点中的主点,计算相应主点的PageRank值,即计算全图中的各顶点的PageRank值。
当前轮计算得到的相应主点的PageRank值由第一部分与第二部分相加所得;其中,第一部分来源于上一轮与主点有对应关系的其他计算节点中的主点发送给相应主点的能量值,第二部分来源于上一轮全局能量池中的能量值与全图顶点数相除得到的值。
当前轮计算得到的相应主点的PageRank值可以用公式表示为:
将主点的PageRank值作为能量值,取75%的能量值放到全局能量池,对于余下25%的能量值:
若主点在全图中有出点,则主点发送给出点的能量值如下:
其中,n为迭代轮数,第1轮计算时,主点接收到的能量值0为0,计算得到的全局能量池中的能量值0为1;
若主点在全图中没有出点,则将余下25%的能量值发送到全局能量池。
第1轮:对计算节点1中的各主点的PageRank值进行计算:
对于顶点1:顶点1的PageRank值=0+1/6=0.16667,顶点1在全图中的出点的数量为2,则顶点1发送到全局能量池中的能量值为:0.16667x75%=0.125;
对于顶点3:顶点3的PageRank值=0+1/6=0.16667,顶点3在全图中没有出点,则顶点3发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.16667;
对于顶点5:顶点5的PageRank值=0+1/6=0.16667,顶点5在全图中没有出点,则顶点5发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.1667;
综上,第一轮中,计算节点1计算得到的全局能量池中的能量值为0.125+0.16667+0.16667=0.4583。
对计算节点2中的各主点的PageRank值进行计算:
对于顶点2:顶点2的PageRank值=0+1/6=0.16667,顶点2在全图中没有出点,则顶点2发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.16667;
对于顶点4:顶点4的PageRank值=0+1/6=0.16667,顶点4在全图中的出点数量为3,则顶点4发送到全局能量池中的能量值为:0.16667x75%=0.125;
对于顶点6:顶点6的PageRank值=0+1/6=0.16667,顶点6在全图中没有出点,则顶点6发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.16667;
综上,第1轮中,计算节点2计算得到的全局能量池中的能量值为0.16667+0.125+0.16667=0.4583。
因此,第1轮中,计算得到的全局能量池中的能量值=计算节点1计算得到的全局能量池中的能量值+计算节点2计算得到的全局能量池中的能量值=0.4583+0.4583=0.9166,结果参见表2。
表2:
第1轮主点的PageRank值计算完成后,将主点的预设比例的PageRank值通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点。
其中,主点的预设比例的PageRank值包括需要发送给与主点有对应关系的其他计算节点中的主点的能量值和需要发送给与主点有对应关系的其他计算节点中的虚点的能量值。
对计算节点1中的各主点的待发送的能量值进行计算,对于顶点1,存在边1->4’,顶点1将需要发送给顶点4的能量值,先发送给本计算节点1中的虚点4’,顶点1向虚点4’发送的能量值=(0.16667x0.25)/2=0.02083,将这部分能量值及顶点4的分区号保存在暂存消息盒中,表示为SendMsg1={‘0’:{4:0.02083}}。
在计算节点1中与顶点1通过边相连的用于接收顶点1发送的能量值的其他主点或虚点的数量之和为1,即虚点4’,在全图中与顶点1通过边相连的用于接收顶点1发送的能量值的其他顶点的数量为2,即顶点2和顶点4,由于在计算节点1中与顶点1通过边相连的用于接收顶点1发送的能量值的其他主点或虚点的数量之和小于在全图中与顶点1通过边相连的用于接收顶点1发送的能量值的其他顶点的数量,因此,在顶点2和顶点4所归属的计算节点2中创建与顶点1相对应的虚点1’;顶点1向虚点1’发送的能量值=(0.16667x0.25)/2=0.02083,将这部分能量值及顶点4的分区号保存在暂存消息盒中,表示为SendMsg1={‘0’:{4:0.02083,1:0.02083}}。
对计算节点2中的各主点的待发送的能量值进行计算,对于顶点4,存在边4->6,顶点4向顶点6发送的能量值=(0.16667x0.25)/3=0.01389,将这部分能量值保存在本地消息盒中,表示为RecMsg2={6:0.01389}。
在计算节点2中与顶点4通过边相连的用于接收顶点4发送的能量值的其他主点或虚点的数量之和为1,即顶点6,在全图中与顶点4通过边相连的用于接收顶点4发送的能量值的其他顶点的数量为3,即顶点3、顶点5和顶点6,由于在计算节点2中与顶点4通过边相连的用于接收顶点4发送的能量值的其他主点或虚点的数量之和小于在全图中与顶点4通过边相连的用于接收顶点4发送的能量值的其他顶点的数量,因此,在顶点3和顶点5所归属的计算节点1中创建与顶点4相对应的虚点4’;顶点4向虚点4’发送的能量值=(0.16667x0.25)/3=0.01389,将这部分能量值及顶点4’的分区号保存在暂存消息盒中,表示为SendMsg2={‘1’:{‘4”:0.01389}}。
至此,计算节点1和计算节点2中各主点待发送的通信消息构建完毕;开始进行第一轮网络通信,各个计算节点依据暂存消息盒中的网络通信消息指向的计算节点的分区号进行能量值的发送,具体过程如下:
对于计算节点1,在网络通信过程中,计算节点1向计算节点2发送的消息包括:将SendMsg1中的0.02083的能量值发送给分区号‘0’对应的计算节点2中的顶点4,以及将SendMsg1中的0.02083的能量值发送给分区号‘0’对应的计算节点2中的顶点1,参考表3。
对于计算节点2,在网络通信过程中,计算节点2向计算节点1发送的消息包括:将SendMsg2中的0.01389的能量值发送给分区号‘1’对应的计算节点1中的虚点4’,参考表3。
至此,计算节点1和计算节点2中的网络通信消息发送完毕;计算节点1和计算节点2开始对接收到的能量值进行处理,具体过程如下:
计算节点1中的顶点1接收到的能量值为0,计算节点1中的虚点4’接收到SendMsg2中的0.01389的能量值,计算节点1找到计算节点1中与虚点4’通过边相连的用于接收虚点4’的能量值的顶点3和顶点5,并将接收到SendMsg2中的0.01389的能量值传递给顶点3和顶点5,因此,计算节点1接收的能量值表示为RecMsg1={3:0.01389,5:0.01389}。
计算节点2中的虚点1接收到SendMsg1中的0.02083的能量值,计算节点2找到计算节点2中与虚点1’通过边相连的用于接收虚点1’的能量值的顶点2,并将接收到SendMsg1中的0.02083的能量值传递给顶点2;计算节点2中的顶点4接收到SendMsg1中的0.02083的能量值,由于顶点4为计算节点2中的主点,因此顶点4将接收到SendMsg1中的0.02083的能量值直接与顶点4接收到的其他能量值进行累加,在本实施例中计算节点2中的顶点4不存在走本地通信接收到的能量值;计算节点2中的主点6存在走本地通信接收到的RecMsg2中的0.01389的能量值;因此,计算节点2接收的能量值表示为RecMsg2={2:0.02083,4:0.02083,6:0.01389},参见表3。
表3:
至此,计算节点1和计算节点2对接收到的能量值处理完毕,第1轮计算和网络通信完毕,第1轮中计算节点1和计算节点2接收到的能量值见表4。
表4:
第2轮:对计算节点1中的各主点的PageRank值进行计算:
对于顶点1:顶点1的PageRank值=0+0.9166/6=0.15277,顶点1在全图中的出点的数量为2,则顶点1发送到全局能量池中的能量值为:0.15277x75%=0.11458;
对于顶点3:顶点3的PageRank值=0.01389+0.9166/6=0.16667,顶点3在全图中没有出点,则顶点3发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.16667;
对于顶点5:顶点5的PageRank值=0.01389+0.9166/6=0.16667,顶点5在全图中没有出点,则顶点5发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.16667;
综上,第一轮中,计算节点1计算得到的全局能量池中的能量值为0.11458+0.16667+0.16667=0.44792。
对计算节点2中的各主点的PageRank值进行计算:
对于顶点2:顶点2的PageRank值=0.02083+0.9166/6=0.1736,顶点2在全图中没有出点,则顶点2发送到全局能量池中的能量值为:0.1736x75%+0.1736x25%=0.1736;
对于顶点4:顶点4的PageRank值=0.02083+0.9166/6=0.1736,顶点4在全图中的出点数量为3,则顶点4发送到全局能量池中的能量值为:0.1736x75%=0.13541;
对于顶点6:顶点6的PageRank值=0.01389+0.9166/6=0.16667,顶点6在全图中没有出点,则顶点6发送到全局能量池中的能量值为:0.16667x75%+0.16667x25%=0.16667;
综上,第2轮中,计算节点2计算得到的全局能量池中的能量值为0.16667+0.13541+0.16667=0.47568。
因此,第2轮中,计算得到的全局能量池中的能量值=计算节点1计算得到的全局能量池中的能量值+计算节点2计算得到的全局能量池中的能量值=0.44792+0.47568=0.9236,结果参见表5。
表5:
第2轮主点的PageRank值计算完成后,对第2轮各主点的PageRank值与第1轮相应各主点的PageRank值的差值的绝对值求和,求和得到的值为0.02776,将求和得到的值与给定值进行比较,若求和得到的值小于给定值,或者,当前轮数小于给定轮数,则停止迭代;否则继续迭代计算和网络通信。
在本实施例中,给定值设为0.00001,给定轮数设为20轮;由于0.02776>0.00001,且当前轮数小于给定轮数,因此,继续迭代计算和网络通信。
第2轮主点的PageRank值计算完成后,将主点的预设比例的PageRank值通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点。
其中,主点的预设比例的PageRank值包括需要发送给与主点有对应关系的其他计算节点中的主点的能量值和需要发送给与主点有对应关系的其他计算节点中的虚点的能量值。
对计算节点1中的各主点的待发送的能量值进行计算,对于顶点1,存在边1->4’,顶点1将需要发送给顶点4的能量值,先发送给本计算节点1中的虚点4’,顶点1向虚点4’发送的能量值=(0.15277x0.25)/2=0.0191,将这部分能量值及顶点4的分区号保存在暂存消息盒中,表示为SendMsg1={‘0’:{4:0.0191}}。
在计算节点1中与顶点1通过边相连的用于接收顶点1发送的能量值的其他主点或虚点的数量之和为1,即虚点4’,在全图中与顶点1通过边相连的用于接收顶点1发送的能量值的其他顶点的数量为2,即顶点2和顶点4,由于在计算节点1中与顶点1通过边相连的用于接收顶点1发送的能量值的其他主点或虚点的数量之和小于在全图中与顶点1通过边相连的用于接收顶点1发送的能量值的其他顶点的数量,因此,在顶点2和顶点4所归属的计算节点2中创建与顶点1相对应的虚点1’;顶点1向虚点1’发送的能量值=(0.15277x0.25)/2=0.0191,将这部分能量值及顶点4的分区号保存在暂存消息盒中,表示为SendMsg1={‘0’:{4:0.0191,1:0.0191}}。
对计算节点2中的各主点的待发送的能量值进行计算,对于顶点4,存在边4->6,顶点4向顶点6发送的能量值=(0.1736x0.25)/3=0.0217,将这部分能量值保存在本地消息盒中,表示为RecMsg2={6:0.0217}。
在计算节点2中与顶点4通过边相连的用于接收顶点4发送的能量值的其他主点或虚点的数量之和为1,即顶点6,在全图中与顶点4通过边相连的用于接收顶点4发送的能量值的其他顶点的数量为3,即顶点3、顶点5和顶点6,由于在计算节点2中与顶点4通过边相连的用于接收顶点4发送的能量值的其他主点或虚点的数量之和小于在全图中与顶点4通过边相连的用于接收顶点4发送的能量值的其他顶点的数量,因此,在顶点3和顶点5所归属的计算节点1中创建与顶点4相对应的虚点4’;顶点4向虚点4’发送的能量值=(0.1736x0.25)/3=0.0217,将这部分能量值及顶点4’的分区号保存在暂存消息盒中,表示为SendMsg2={‘1’:{‘4”:0.0217}}。
至此,计算节点1和计算节点2中各主点待发送的通信消息构建完毕;开始进行第一轮网络通信,各个计算节点依据暂存消息盒中的网络通信消息指向的计算节点的分区号进行能量值的发送,具体过程如下:
对于计算节点1,在网络通信过程中,计算节点1向计算节点2发送的消息包括:将SendMsg1中的0.0191的能量值发送给分区号‘0’对应的计算节点2中的顶点4,以及将SendMsg1中的0.0191的能量值发送给分区号‘0’对应的计算节点2中的顶点1,参考表6。
对于计算节点2,在网络通信过程中,计算节点2向计算节点1发送的消息包括:将SendMsg2中的0.0217的能量值发送给分区号‘1’对应的计算节点1中的虚点4’,参考表6。
至此,计算节点1和计算节点2中的网络通信消息发送完毕;计算节点1和计算节点2开始对接收到的能量值进行处理,具体过程如下:
计算节点1中的顶点1接收到的能量值为0,计算节点1中的虚点4’接收到SendMsg2中的0.0217的能量值,计算节点1找到计算节点1中与虚点4’通过边相连的用于接收虚点4’的能量值的顶点3和顶点5,并将接收到SendMsg2中的0.0217的能量值传递给顶点3和顶点5,因此,计算节点1接收的能量值表示为RecMsg1={3:0.0217,5:0.0217}。
计算节点2中的虚点1接收到SendMsg1中的0.0191的能量值,计算节点2找到计算节点2中与虚点1’通过边相连的用于接收虚点1’的能量值的顶点2,并将接收到SendMsg1中的0.0191的能量值传递给顶点2;计算节点2中的顶点4接收到SendMsg1中的0.0191的能量值,由于顶点4为计算节点2中的主点,因此顶点4将接收到SendMsg1中的0.0191的能量值直接与顶点4接收到的其他能量值进行累加,在本实施例中计算节点2中的顶点4不存在走本地通信接收到的能量值;计算节点2中的主点6存在走本地通信接收到的RecMsg2中的0.0217的能量值;因此,计算节点2接收的能量值表示为RecMsg2={2:0.0191,4:0.0191,6:0.0217},参见表6。
表6:
至此,计算节点1和计算节点2对接收到的能量值处理完毕,第2轮计算和网络通信完毕,第2轮中计算节点1和计算节点2接收到的能量值见表7。
表7:
开始第3轮对计算节点1中的各主点的PageRank值进行计算,第3轮主点的PageRank值计算完成后,对第3轮各主点的PageRank值与第2轮相应各主点的PageRank值的差值的绝对值求和,将求和得到的值与给定值进行比较,若求和得到的值小于给定值,或者,当前轮数小于给定轮数,则停止迭代并返回最后一轮所有主点的PageRank值,依据最后一轮所有主点的PageRank值的大小进行全图中的顶点的重要性排序;否则继续迭代计算和网络通信。
在本实施例中,为了保证计算的准确性,计算节点1和计算节点2的迭代轮数必须保持一致,因此在迭代计算的过程中,计算节点1和计算节点2中的主点和/或虚点对接收的网络通信消息进行处理时,若接收的网络通信消息中携带的迭代轮数大于当前轮,则对接收的网络通信消息进行阻塞;若接收的网络通信消息中携带的迭代轮数等于当前轮,则对接收的网络通信消息中待累加和待传递的能量值进行相应的处理。
其中,所述待累加的能量值为主点接收的网络通信消息中的能量值,所述待传递的能量值为虚点接收的网络通信消息中的能量值。
继续参考图6,在本实施例中,与现有技术相比,计算节点1和计算节点2中的只有主点参与计算;对于顶点4,如图6中的虚线1所示,计算节点2中的顶点4会把部分能量值发送给虚点4’,虚点4’收到能量值后,再传递给计算节点1中的顶点3和顶点5。对于顶点1,计算节点1的顶点1会把部分能量值发送给虚点1’,计算节点2中的虚点1’收到能量值后,再传递给顶点2;计算节点1中的顶点1还会把部分能量值发送给虚点4’,由于虚点是不存储能量的,所以顶点1不是把部分能量值先发给虚点4’,再由虚点4’发给主点4’,而是直接发给计算节点2的主点4,而计算节点1中的虚点4’仅作为一个桥梁,让顶点1知悉计算节点1中的顶点1和计算节点2中的顶点4之间是存在连接的;本实施例中,只有主点存储每一轮的PageRank值,仅由主点向与主点存在对应关系的其他计算节点中的主点或虚点发送能量。
实施例3:
本发明实施例提供了一种优化分布式PageRank算法通信过程的装置,如图7所示,包括一个或多个处理器21以及存储器22。其中,图7中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的优化分布式PageRank算法通信过程的方法的实现方法。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行优化分布式PageRank算法通信过程的方法的实现方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的优化分布式PageRank算法通信过程的方法,例如,执行以上描述的图3所示的各个步骤。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种优化分布式PageRank算法通信过程的方法,其特征在于,包括:
依据分区计算将全图中的顶点和边划分给相应计算节点;其中,完成划分的顶点称为相应计算节点的主点,完成划分的边的一个顶点与边归属于相同的计算节点,若另一个顶点与边归属于不同的计算节点,则在所述相同的计算节点中创建与所述另一顶点对应的虚点;
遍历各个计算节点中的主点,计算主点的PageRank值;将主点的预设比例的PageRank值通过一轮网络通信发送给与主点有对应关系的其他计算节点中的主点或虚点;
迭代计算和网络通信直到满足停止迭代的预设条件。
2.根据权利要求1所述的优化分布式PageRank算法通信过程的方法,其特征在于,所述依据分区计算将全图中的顶点和边划分给相应计算节点,包括:
赋予每个计算节点一个分区号,每个计算节点遍历全图中的顶点和边;
若计算出来的顶点的分区号与当前计算节点的分区号相同,则将相应的顶点划分到当前计算节点中,相应的顶点作为当前计算节点中的主点;
若计算出来的边的分区号与当前计算节点的分区号相同,则将相应的边划分到当前计算节点中,相应的边用于进行当前计算节点内的主点与主点,或者主点与虚点之间的通信。
3.根据权利要求2所述的优化分布式PageRank算法通信过程的方法,其特征在于,全图中各顶点的分区号由顶点的hash值对分区数量取模运算得到;全图中各边的分区号的计算过程包括:根据当前顶点的出点的数量是否大于预设数量判断当前顶点为高度点还是低度点;若边的终点为高度点,则根据相应边的起点的hash值对分区数量取模运算得到相应边的分区号;若边的终点为低度点,则根据相应边的终点的hash值对分区数量取模运算得到边的分区号;
其中,所述当前顶点的出点的数量为在全图中与当前顶点通过边相连的用于接收所述当前顶点发送的能量值的其他顶点的数量;在一条边的两个顶点中,用于发送能量值的顶点为边的起点,用于接收能量值的顶点为边的终点。
4.根据权利要求1所述的优化分布式PageRank算法通信过程的方法,其特征在于,当前轮计算得到的相应主点的PageRank值由第一部分与第二部分相加所得;其中,第一部分来源于上一轮与主点有对应关系的其他计算节点中的主点发送给相应主点的能量值,第二部分来源于上一轮全局能量池中的能量值与全图顶点数相除得到的值。
5.根据权利要求4所述的优化分布式PageRank算法通信过程的方法,其特征在于,网络通信阶段包括:
主点将待发送的能量值携带在网络通信消息中发送给主点所归属的计算节点中的与主点通过边相连的用于接收主点发送的能量值的虚点,相应虚点将接收到的能量值传递给与相应虚点对应的其他计算节点中的主点;
主点将待发送的能量值携带在网络通信消息中发送给与主点有对应关系的其他计算节点中的虚点,相应虚点将接收到的能量值传递给相应虚点所归属的计算节点中的与相应虚点通过边相连的用于接收相应虚点发送的能量值的主点。
6.根据权利要求5所述的优化分布式PageRank算法通信过程的方法,其特征在于,网络通信消息中还包括与主点有对应关系的其他计算节点的分区号,依据分区号到IP地址的映射关系,主点将待发送的能量值向与主点有对应关系的其他计算节点中的主点或虚点进行发送。
7.根据权利要求1所述的优化分布式PageRank算法通信过程的方法,其特征在于,所述迭代计算和网络通信直到满足停止迭代的预设条件,包括:
一轮计算和网络通信完成后,若对当前轮各主点的PageRank值与上一轮相应各主点的PageRank值的差值的绝对值求和得到的值小于给定值,或者,当前轮数大于给定轮数,则停止迭代;
否则,继续迭代计算和网络通信。
8.根据权利要求7所述的优化分布式PageRank算法通信过程的方法,其特征在于,在迭代计算的过程中,各个计算节点中的主点和/或虚点对接收的网络通信消息进行处理时,若接收的网络通信消息中携带的迭代轮数大于当前轮,则对接收的网络通信消息进行阻塞;若接收的网络通信消息中携带的迭代轮数等于当前轮,则对接收的网络通信消息中待累加和待传递的能量值进行相应的处理。
9.根据权利要求1所述的优化分布式PageRank算法通信过程的方法,其特征在于,所述与主点有对应关系的其他计算节点中的主点或虚点,其中:
与主点有对应关系的其他计算节点中的主点为:在全图中与主点通过边相连的用于接收主点发送的能量值且与主点归属于不同的计算节点的其他顶点;
与主点有对应关系的其他计算节点中的虚点为:若在计算节点中与主点通过边相连的用于接收主点发送的能量值的其他主点或虚点的数量之和小于在全图中与相应主点通过边相连的用于接收相应主点发送的能量值的其他顶点的数量,则在与相应主点归属的计算节点不同的其他顶点所归属的计算节点中创建与相应主点对应的虚点。
10.一种优化分布式PageRank算法通信过程的装置,其特征在于,所述装置包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,用于执行权利要求1-9任一所述的优化分布式PageRank算法通信过程的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110763995.7A CN113489790B (zh) | 2021-07-06 | 2021-07-06 | 一种优化分布式PageRank算法通信过程的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110763995.7A CN113489790B (zh) | 2021-07-06 | 2021-07-06 | 一种优化分布式PageRank算法通信过程的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113489790A true CN113489790A (zh) | 2021-10-08 |
CN113489790B CN113489790B (zh) | 2024-02-02 |
Family
ID=77941362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110763995.7A Active CN113489790B (zh) | 2021-07-06 | 2021-07-06 | 一种优化分布式PageRank算法通信过程的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113489790B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686991A (zh) * | 2012-09-06 | 2014-03-26 | 中国人民解放军信息工程大学 | 一种实现无线传感网节点定位的方法及装置 |
CN106203681A (zh) * | 2016-06-29 | 2016-12-07 | 大连理工大学 | 一种数据驱动的公共交通导向型城市区域划分与挖掘方法 |
WO2017076296A1 (zh) * | 2015-11-03 | 2017-05-11 | 华为技术有限公司 | 处理图数据的方法和装置 |
CN107708089A (zh) * | 2017-10-30 | 2018-02-16 | 吴豪 | 基于分簇的数据转发方法和数据转发装置 |
CN111177486A (zh) * | 2019-12-19 | 2020-05-19 | 四川蜀天梦图数据科技有限公司 | 一种分布式图计算过程中的消息传递方法和装置 |
-
2021
- 2021-07-06 CN CN202110763995.7A patent/CN113489790B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103686991A (zh) * | 2012-09-06 | 2014-03-26 | 中国人民解放军信息工程大学 | 一种实现无线传感网节点定位的方法及装置 |
WO2017076296A1 (zh) * | 2015-11-03 | 2017-05-11 | 华为技术有限公司 | 处理图数据的方法和装置 |
CN106203681A (zh) * | 2016-06-29 | 2016-12-07 | 大连理工大学 | 一种数据驱动的公共交通导向型城市区域划分与挖掘方法 |
CN107708089A (zh) * | 2017-10-30 | 2018-02-16 | 吴豪 | 基于分簇的数据转发方法和数据转发装置 |
CN111177486A (zh) * | 2019-12-19 | 2020-05-19 | 四川蜀天梦图数据科技有限公司 | 一种分布式图计算过程中的消息传递方法和装置 |
Non-Patent Citations (1)
Title |
---|
陈诚;战荫伟;李鹰;: "基于网页链接分类的PageRank并行算法", 计算机应用, no. 01 * |
Also Published As
Publication number | Publication date |
---|---|
CN113489790B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111741054B (zh) | 一种移动用户深度神经网络计算卸载时延最小化方法 | |
CN107220731A (zh) | 一种物流配送路径规划方法 | |
CN109271562B (zh) | 通行费用确定方法、路网节点关系模型构建方法及装置 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
CN112100450A (zh) | 一种图计算数据分割方法、终端设备及存储介质 | |
CN111538867A (zh) | 一种有界增量图划分方法和系统 | |
CN110689174B (zh) | 基于公共交通的人员路线规划方法及装置 | |
CN104266657A (zh) | 基于cpu和mic协同计算的最短路径规划并行化方法 | |
CN114244774B (zh) | 一种基于群体智能的leo卫星网络拥塞规避组播路由方法 | |
CN111861018A (zh) | 一种基于路由信息协议的仓库拣选路径优化方法、存储介质及设备 | |
CN105471893A (zh) | 一种分布式等值数据流连接方法 | |
CN115186806A (zh) | 一种支持跨节点自动微分的分布式图神经网络训练方法 | |
CN113986485A (zh) | 一种跨数据中心数据传输节能优化方法及系统 | |
CN112699134A (zh) | 基于图剖分的分布式图数据库的存储与查询方法 | |
CN113489790A (zh) | 一种优化分布式PageRank算法通信过程的方法及装置 | |
CN110245271B (zh) | 基于属性图的大规模关联数据划分方法及系统 | |
CN116861031A (zh) | 基于图计算的电力潮流计算方法、系统、设备及介质 | |
Liu et al. | Emergency scheduling optimization simulation of cloud computing platform network public resources | |
CN111738624B (zh) | 一种用于解决供求关系平衡的区域划分方法及系统 | |
CN114610058A (zh) | 一种集群飞行器多任务分布式任务分配方法 | |
CN112948087A (zh) | 一种基于拓扑排序的任务调度方法及系统 | |
CN110598930B (zh) | 一种公交线路优化调整方法及装置 | |
CN102625198B (zh) | 光资源智能配置方法及系统 | |
CN114024977A (zh) | 一种基于边缘计算的数据调度方法、装置及系统 | |
CN111881327A (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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Li Dong Inventor after: Zhou Fan Inventor after: Tan Jiang Inventor after: Zhang Rui Inventor before: Lv Wei Inventor before: Cheng Ping Inventor before: Tang Jun Inventor before: Zhang Rui |
|
GR01 | Patent grant | ||
GR01 | Patent grant |