首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

论文阅览笔记 - Pregel

2012-12-17 
论文阅读笔记 -Pregel作者:刘旭晖 Raymond 转载请注明出处Email:colorant at 163.comBLOG:http://blog.csd

论文阅读笔记 - 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的进程也分为Master和Worker,每个Worker负责处理一部分的节点(以特定的算法对节点进行分区Partition),Master则负责调度superstep

 

各种优化和特定Feature

 

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

 

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

 

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

 

容错

 

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

 

Future Work

 

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

 

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

 

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

热点排行