这篇文章是对Pregel论文思想的理解的第一部分
因为Giraph是对Pregel论文中所提到的思想的实现,即前面提到的Giraph的开发基于Pregel中的原理,所以首先要把Pregel中讲了什么搞清楚
灵感
对pregel的灵感来自于BSP模型,
- Pregel由一系列的迭代(iterations)构成,每一次迭代我们称其为superstep
- 每一次superstep(s)中,计算框架都会invoke用户对每个顶点定义的函数
- 这个函数可以将 上一个superstep发来的 message读入, 进行运算,并且在下一个superstep中发送给另外的顶点,并且在此过程中修改本节点的状态和出边的状态
- 这里值得注意的是,message通常是由顶点的出边发送
运算模式
pregel的运算模式中需要定义的如下
在Pregel 计算模式中,输入是一个有向图,该有向图的每一个顶点都有一个相应的由String 描述的vertex identifier。
每一条有向边都和其源顶点关联,并且也拥有一些用户定义的属性和值,并同时还记录了其目的顶点的ID。
典型的Pregel 计算过程如下
读取输入,初始化该图,当图被初始化好后,运行一系列的supersteps,每一次superstep 都在全局的角度上独立运行,直到整个计算结束,输出结果。
- 在每一次的superstep 中,顶点的计算都是并行的,每一次执行用户定义的同一个函数。
- 每个顶点可以修改其自身的