Power Graph的关于GAS的思考

来源:互联网 发布:免root的手机数据恢复 编辑:程序博客网 时间:2024/06/11 17:36

总结一下目前对于专门的图处理框架GraphLab和Pregel是不适合处理这种natural graphs 
主要的两大挑战是高纬度的点和低质量的分区策略。

本文提出的PowerGraph即是为了解决这2个问题而设计的,其中Power的意思就是密分布的意思。

下面就来介绍PowerGraph的详细设计细节:

PowerGraph的主要贡献或者说创新点可归结为以下两点:

第一,提出了GAS计算模型,将高维度的点进行并行化

第二是采用点切分策略,来保证整个集群的均衡性,该策略对大量密率图分区是非常高效的。

这里主要介绍一下GAS 模型

GAS Decomposition

这里写图片描述

顶点程序的通用模板大致如图所示,第一步收集邻居节点信息,第二步更新节点权值,如果还没有收敛,触发节点邻居再次运行顶点程序。 

这里写图片描述

GAS分解过程如下,

Gather:收集邻居信息 
先收集同一台机器的信息,然后对不同主机收集的信息进行汇总。得到最后的求和信息。

Apply:对中心点应用收集点的值,得到y一撇

Scatter(分散):更新邻居点和边,触发邻居点进行下一轮迭代。 

这里写图片描述

那么就PowerGraph的GAP模型应用到RageRank算法中,是什么样的过程?

该公式中i表示目标节点,我们需要对这个节点求PageRank值,wij表示从j点到i点的权值,

Gather阶段,先求i所有邻居节点的权值,用户自定义一个sum操作,统计所有邻居节点的权值之和。

Apply阶段更新i点的权值,利用上一阶段的sum值加上一个偏置值,计算得到i的新的权值;

Scatter阶段如果i值被修改,就触发相应的邻居节点j重新计算。

当顶点按点切分方式被分到4台机器之后,在多个节点上指派一个为Master,其余的为Mirror。

Mirror上可以运行Gather程序来收集所有邻居的信息,并进行聚合计算(sum)后发送给Master。

Master上的Gather程序收集这些结果,最终将这个结果应用到Apply程序上,得到新的节点状态。然后通过Scatter程序将新的节点状态广播给各个Mirror,Mirror进而广播给各个邻居。



0 0
原创粉丝点击