论文阅读笔记 - Pregel

作者:刘旭晖 Raymond 转载请注明出处

Email:colorant at 163.com

BLOG:http://blog.csdn.net/colorant/

更多论文阅读笔记 http://blog.csdn.net/colorant/article/details/8256145


阅读笔记Pregel: A System for Large-Scale GraphProcessing

 

关键字

分布式计算,图,迭代

 

==目标问题 ==

 

设计一种解决图(Graph)类问题的大规模分布式并行运算框架,提供一个通用的API接口。

 

==核心思想 ==

 

Pregel将目标图类问题的运算模型归结为在图的拓扑节点(Vertex)上迭代执行特定的算法。每次迭代称为一个superstep

 

Pregel中,数据模型的主要概念包括节点,边(Edge)和消息(Message)。在每个superstep步骤中,各个节点执行相同的用户定义函数来处理数据,更新自身的状态乃至更改整个图的拓扑结构(如增减节点,边等)。每个节点的边则用来链接相关的目标节点,通过发送消息给其它节点来传递数据。

 

整个处理流程中,数据的接收和处理是以superstep为节拍来同步的,在一个superstep中各个节点所发送的消息,直到下一个superstep里才会被目标节点所接收和处理并触发状态变更。这种基于节拍的处理流程,很大程度上简化了数据同步的处理。

 

每个节点在当前superstep中处理完数据后,会投票决定自身是否停止处理,如果没有被消息再次触发,在以后的superstep中就不会调度该节点进行运算。当所有节点都停止后,整个迭代过程结束。

 

==实现 ==

 

进程模型

在实现中,Pregel的进程也分为MasterWorker,每个Worker负责处理一部分的节点(以特定的算法对节点进行分区Partition),Master则负责调度superstep

 

各种优化和特定Feature

 

为了减少Worker之间数据传输的开销,一方面Worker内部所有节点的消息会被放入队列中批量传输,另一方面,Combiner类在一些场合里(如Sum)可以被用来在消息传递前进行消息(也就是数据)合并。

 

此外Pregel还提供了Aggregator类来实现全局的通讯,数据同步,统计等工作,每个Worker先在本地做Reduction,再将结果发送给mastermaster做完全局Reduction后会在下一个superstep开始的时候将结果再分发给各个节点使用。

 

Master是以Partition而非节点为单位管理相关Worker,因此可以处理大规模的图拓扑结构

 

容错

 

目前的容错方案是基于Checkpoint的,Master在一个superstep开始时可以要求各个worker保存当前状态到物理存储设备中,当检测到某个worker fail的时候,从最近的checkpoint开始重新迭代运算整个图。目标的改进方案是额外记录每个节点发送的消息,便于单独迭代恢复单个节点的最新状态。

 

Future Work

 

包括放宽数据同步模型,改进在大规模集群中速度快的workerSuperstep之间等待数据同步的过程。

 

==相关研究,项目等 ==

 

BagelSpark自带的一个Pregel模型的实现,应该基本上就是利用了Spark自身的RDD可以常驻内存,适合于迭代运算的特性,额外加上对Pregel循环调度算法和用户API接口的实现。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值