Powergraph:分布式自然图的并行计算

PowerGraph: Distributed Graph-Parallel Computation on Natural Graphs(OSDI'12)  

2013-02-28 18:30:21|  分类: 迭代图计算|字号 订阅

本文先提出了已有的并行图处理系统中的挑战,然后介绍了PowerGraph的解决方案,并提出了一种针对Power-Law图的有效分区方案。

已有的并行图处理系统比如PregelGraphLab的并行化受限于vertex的邻居个数,且图的划分效率直接影响系统的通信开销。然而,现实图如社交网络和网页图,都是典型的Power-Law分布图,其中少部分vertex连接到图中大部分的vertex上,而且,Power-Law图的图划分本身就是一个难题。

PowerGraph将基于vertex的图计算抽象成一个通用的计算模型:GAS模型,分为三个阶段:GatherApplyScatter

1.       Gather阶段,用户自定义一个sum操作,用于各个vertex,将vertex的相邻vertex和对应edge收集起来;

2.       Apply阶段各个vertex利用上一阶段的sum值进行计算更新原始值;

3.       Scatter阶段利用第二阶段的计算结果更新vertex相连的edge值。

  1 Page Rank

由于vertex计算会频繁调用Gather阶段操作,而大多数相邻的vertex的值其实并不会变化,为了减少计算量,PowerGraph提供了一种Cache机制,图1显示了PowerGraph机制下Page Rank计算的过程伪代码。

PowerGraph提出了一种均衡图划分方案,减少计算中通信量的同时保证负载均衡。与PregelGraphLab均采用的hash随机分配方案不同,它提出了一种均衡p-路顶点切割(vertex-cut)分区方案。根据图的整体分布概率密度函数计算顶点切割的期望值:

  根据该期望值指导对顶点进行切割,并修改了传统的通信过程,具体如下图 2 所示。

  2  基于 vertex-cut 的通信过程

实验时,PowerGraph按同步方式不同分别实现了三种版本(全局同步,全局异步,可串行化异步)。

1.       全局同步与Pregel类似,Superstep之间设置全局同步点,用以同步对所有edge以及vertex的修改;

2.       全局异步类似GraphLab,所有Apply阶段和Scatter阶段对edgevertex的修改立即更新到图中;

3.       全局异步会使得算法设计和调试变得很复杂,对某些算法效率可能比全局同步还差,因此有全局异步加可串行化结合的方式。

在差错控制上,依靠checkpoint的实现,采用GraphLab中使用的Chandy-Lamport快照算法。

本文通过将图计算模型进行抽象,设计实现均衡的图划分方案,对比三种不同方式下的系统实现,并实现了差错控制。

 

来源:http://wuyanzan60688.blog.163.com/blog/static/127776163201312863021180/

你可能感兴趣的:(高性能计算,算法,集群计算,并行计算)