[说明:前几天导师扔给我一篇论文:Pregel,让我看,然后又和我说了Giraph这些。之前对图计算没有了解,听的我是一脸懵逼。这几天通过查看一些博客,对此有了一些了解。写下这篇博客,理一下思路,也供大家参考学习,如有错误,请多指点。本文只是个简介,具体学习可以参考文章最后的链接。]
一、图计算概念
图(Graph)是用于表示对象之间关联关系的一种抽象数据结构,使用顶点(Vertex)和边(Edge)进行描述:顶点表示对象,边表示对象之间的关系。可抽象成用图描述的数据即为图数据。图计算,便是以图作为数据模型来表达问题并予以解决的这一过程。以高效解决图计算问题为目标的系统软件称为图计算系统。
二、图计算的应用
基于图模型的数据分析方法已经应用在了互联网的很多场景:社交网络分析、网页排序、社区发现等
1.网页排序
将网页作为顶点,网页之间的超链接作为边,整个互联网可以建模成一个非常巨大的图(十万亿级边)。搜索引擎在返回结果时,除了需要考虑网页内容与关键词的相关程度,还需要考虑网页本身的质量。
PageRank是最早Google用于对网页进行排序的算法,通过将链接看成投票来指示网页的重要程度。PageRank的计算过程并不复杂:在首轮迭代开始前,所有顶点将自己的PageRank值设为1;每轮迭代中,每个顶点向所有邻居贡献自己当前PageRank值除以出边数作为投票,然后将收到的所有来自邻居的投票累加起来作为新的PageRank值;如此往复,直到所有顶点的PageRank值在相邻两轮之间的变化达到某个阈值为止。
2.社区发现
社交网络也是一种典型的图数据:顶点表示人,边表示人际关系;更广义的社交网络可以将与人有关的实体也纳入进来,例如手机、地址、公司等。社区发现是社交网络分析的一个经典应用:将图分成若干社区,每个社区内部的顶点之间具有相比社区外部更紧密的连接关系。社区发现有非常广泛的用途,在金融风控、国家安全、公共卫生等大量场景都有相关的应用。
标签传播是一种常用的社区发现算法:每个顶点的标签即为自己的社区,初始化时设置自己的顶点编号;在随后的每一轮迭代中,每个顶点将邻居中出现最频繁的标签设置为自己新的标签;当所有顶点相邻两轮之间的标签变化少于某个阈值时则停止迭代。
3.最短路径
在图上发现顶点与顶点之间的最短路径是一类很常见的图计算任务,根据起始顶点与目标顶点集合的大小,又可分为单对单(一个顶点到一个顶点)、多对多(多个顶点到多个顶点)、单源(一个顶点到所有其它顶点)、多源(多个顶点到所有其它顶点)、所有点对(所有顶点到其它所有顶点)等。对于无权图,通常使用基于BFS的算法;对于有权图,比较常见的有SPFA算法、Bellman-Ford算法等。
最短路径的用途十分广泛:在知识图谱中经常需要寻找两个实体之间的最短关联路径;基于黑名单和实体之间的关联可以发现其它顶点与黑名单之间的距离;而所有点对的最短路径可以帮助衡量各个顶点在整个图的拓扑结构所处的位置(中心程度)。
三、图计算系统
1.Pregel
谷歌公司在2003年到2004年公布了GFS、MapReduce和BigTable,成为后来云计算和Hadoop项目的重要基石。
谷歌在后Hadoop时代的新“三驾马车”——Caffeine(大规模网页索引构建,即爬虫)、Dremel(实时交互式查询,PB级数据2-3秒即可给出查询结果)和Pregel,再一次影响着圈子与大数据技术的发展潮流。
Pregel最早提出是Google在2010发表的论文:Pregel: a system for large-scale graph processing。这篇论文为图计算提供了新的思路,但是一直没有开源。
Apache基金会下的Hama和Giraph是两个较为知名的提供了Pregel接口的开源图计算系统。
2.Giraph
Giraph 是 Google 于 2010 年发布的论文 Pregel: a system for large-scale graph processing 的开源实现。Giraph 是以 Hadoop 为基础开发的上层应用,其系统架构和计算模型与 Pregel 保持了一致。同时也在 Pregel 模型上增加了一些新的特性,如:out-of-core computation、edge-oriented input 等。Giraph 的目的是为了解决大规模图的分布式计算问题。通过隐藏分布式和并行计算的细节以及提供一套用于描述图算法的 API,Giraph 不仅拥有了很好的可扩展性,还降低了分布式图计算的使用门槛。
3.Hama
Hama是建立在Hadoop上的分布式并行计算模型。基于Map/Reduce 和 Bulk Synchronous的实现框架。运行环境需要关联Zookeeper、Hbase、HDFS组件。集群环境中的系统架构由BSPMaster/GroomServer(Computation Engine)、Zookeeper(Distributed Locking)、HDFS/Hbase(Storage Systems)这3大块组成。Hama中有2个主要的模型: 矩阵计算(Matrix package)和 面向图计算(Graph package)。
参考:
1.Pregel: a system for large-scale graph processing 原文下载
2.Pregel技术原理
3.Pregel: a system for large-scale graph processing 译文
4.Pregel: A System for Large-Scale Graph Processing(译)
5.Giraph简介