参考文献点击打开链接

【前言:有一种说法[1]是Google的程序里面80%用的是MapReduce,20%用的是Pregel。今天就来介绍一下这个Pregel。想要深入研究的同志们,可以参考最新的SIGMOD 2010 ppt[2]。】

简介

Pregel是一个用于分布式图计算的计算框架,主要用于图遍历(BFS)、最短路径(SSSP)、PageRank计算等等。共享内存的运行库有很多,但是对于google来说,一台机器早已经放不下需要计算的数据了,所以需要分布式的这样一个计算环境。没有Pregel之前,你可以选择用MapReduce来做,但是效率很低;你也可以用已有的并行图算法库Parallel BGL或者CGMgraph来做,但是这两者又没有容错。所以google就自己开发了这个新的计算框架。

(八卦一下:Pregel的名字来历很有意思。是为了纪念欧拉的七桥问题[7],七座桥就位于Pregel这条河上。)

核心概念

从高层次看,Pregel是BSP[8]模型,就是“计算”-“通信”-“同步”的模式,参看图1。

  • 输入输出为有向图
  • 分成超步
  • 以节点为中心计算,超步内每个节点执行自己的任务,执行节点的顺序不确定
  • 两个超步之间是通信阶段

图1: BSP Model

在Pregel中,以节点为中心计算。Step 0时每节点都活动着,每个节点主动“给停止投票”进入不活动状态。如果接收到消息,则激活。没有活动节点和消息时,整个算法结束。

图2: Vetex State Machine(参考2)

容错是通过检查点来做的。在每个超步开始的时候,对主从节点分别备份。

核心的概念就是这些,其他还有一些消息聚集(combiner)等优化。有兴趣可以看看Lixiang的阅读笔记[6]和Pregel Slides[2]。

类似开源实现

人人都喜欢免费。跟Pregel最像的是Hama[5],也是基于BSP,但是,开源的Hama还未成气候。笔者原来打算拿它来做些实验,结果还不能运行。

国内似乎还没有类似Pregel的计算引擎,不知道百度和淘宝这些公司有没有需求。淘宝最近9月份开源了他们的文件系统TFS[3][4],很敬仰。不知道上面的运行环境是不是在开发中。大宋的开源软件也要有自己的创新,不能老是拿老外的改改就用了。

参考资料

1. Pregel: Google’s other data-processing infrastructure, http://www.royans.net/arch/pregel-googles-other-data-processing-infrastructure/

2. Pregel: A System for Large-Scale Graph Processing, SIGMOD 2010的ppt, http://www.slideshare.net/shatteredNirvana/pregel-a-system-for-largescale-graph-processing

3. 淘宝文件系统TFS开源代码,http://code.taobao.org/project/view/366/

4.  淘宝文件系统TFS介绍,http://rdc.taobao.com/blog/cs/?p=128

5. Hama homepage, http://incubator.apache.org/hama/

6. 论文阅读笔记:Google的图模型分布式计算框架Pregel

7. Seven Bridges of Königsberg, http://en.wikipedia.org/wiki/Seven_Bridges_of_K%C3%B6nigsberg

8. http://en.wikipedia.org/wiki/Bulk_synchronous_parallel

Google图算法引擎Pregel介绍相关推荐

  1. 开源C++项目Google JavaScript引擎V8挑战实录,带你进入V8之旅

    开源C++项目Google JavaScript引擎V8挑战实录,带你进入V8之旅 http://www.cnblogs.com/pugang/archive/2012/04/02/2430519.h ...

  2. GEE系列:第4单元 Google 地球引擎中的数据导入和导出

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  3. GEE系列:第6单元 在 Google 地球引擎中构建各种遥感指数

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  4. 对于Google Earth Engine的介绍

    对于Google Earth Engine的介绍 关于GEE的总体介绍 GEE的优势 GEE的学习资料 关于GEE的总体介绍 Google Earth Engine (GEE),又称谷歌地球引擎,是当 ...

  5. GEE系列:第10单元 使用 Google 地球引擎创建图形用户界面【GUI开发】

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  6. 2016 Google I/O新知介绍之 Daydream VR platform

    作者 Steven.Zhu 1     背景 1.1  VR元年 2016年被称为「VR元年」,业界对虚拟现实的关注持续升温,Oculus Rift引领了整个行业的风向已成为不争的事实,索尼PSVR. ...

  7. Google Guava Collections 使用介绍

    原帖http://www.open-open.com/lib/view/open1325143343733.html 简介: Google Guava Collections 是一个对 Java Co ...

  8. Java模板引擎 FreeMarker介绍1

    Java模板引擎 FreeMarker介绍 摘要: FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写,FreeMarker被设计用来生成HTML Web页面( ...

  9. 使用Google语音识别引擎(Google Speech API)

    本文转自csdn 使用Google语音识别引擎(Google Speech API)[3月5日修改] 分类: Qt Google 语音识别 API C++ 2012-01-24 17:56 19352 ...

最新文章

  1. 【ACM】【STL】stack应用
  2. linux shell编程学习笔记(9)正则表达式
  3. linux定时调用程序参数说明
  4. 走近科学,探究阿里闲鱼团队通过数据提升Flutter体验的真相
  5. 从0到1写RT-Thread内核——空闲线程与阻塞延时的实现
  6. c语言编程被当作病毒,为什么这个微不足道的C程序被检测为病毒?
  7. ubuntu mysql支持中文_ubuntu (16.04) server 英文原版 添加中文语言支持 消除java 程序、mysql 数据库不能处理中文的错误...
  8. Halcon图像预处理之灰度形态学
  9. C 语言的32 个关键字意义
  10. 安卓逆向015之JEB静态分析与动态调试(注册机)
  11. android中实现内容搜索
  12. 浅谈iOS进阶路线,让自己人生不迷茫!
  13. 查看TRP开头的数据量超过1000000的表的index情况
  14. 自建数据库与云数据库RDS性能优势与优缺点对比
  15. 《硬核父母的五项修炼》读后感
  16. 分布式学习之一:事务
  17. Android 尺寸转换器(适配各种屏幕)
  18. Linux网络服务-----测试网络命令与DHCP服务
  19. bzoj 1606 购买干草
  20. Ubuntu16.04 安装docker-ce [傻瓜教程]

热门文章

  1. 【Rust日报】2020-04-13 Ruma,Flutter RS,Valora,Rust SSH,mathbench
  2. 人工智能(4):模型评估
  3. 【实战演练】Ceph分布式存储系列02-Ceph分布式存储的3种使用方式
  4. C#-MVC的Swagger对重复的架构ID(类型名重复)报错问题
  5. 关于 time wait
  6. 软件黑盒测试理论(全)
  7. 2018杭州-云栖大会
  8. 【Amber】分子动力学结果分析(一)mdout_analyzer.py
  9. 电信宽带无法做端口转发
  10. Tcl/Tk教程_编程入门自学教程_菜鸟教程-免费教程分享