本文是一系列文章的第二篇,将介绍图计算系统领域的开山之作Pregel和各类衍生的开源系统,以及GraphLab团队的一系列工作。
Pregel
图计算在Google内部有很多应用场景,一个最经典的例子是PageRank——Google最早用来对网页进行排序的算法。而Google在2008年时就已经索引了超过一万亿的网页[1]!尽管使用MapReduce能够处理非常大规模的数据,然而日益增长的网页数量对图计算能力提出了越来越高的要求。在这种状况下,Pregel诞生了。
[1] Official Google Blog: We knew the web was big... https://googleblog.blogspot.com/2008/07/we-knew-web-was-big.html
Pregel提出了以顶点为中心(vertex-centric)的图计算编程模型,将算法的每一轮迭代抽象为从单个顶点的角度考虑需要完成的计算过程,即用户自定义的顶点程序(vertex programs)。每个顶点有两种状态:活跃和非活跃;每轮迭代中只有活跃顶点需要参与计算。Pregel使用消息传递(message passing)模型在顶点之间通信:用户可以在顶点程序中让一个顶点向其它顶点(通常是邻居)发送消息;根据收到的消息,顶点可以更新自己