GraphLab是一个面向大规模机器学习/图计算的分布式内存计算框架,由CMU在2009年开始的一个C++项目,这里的内容是基于论文

Low, Yucheng, et al. "Distributed GraphLab: A Framework for Machine Learning in the Cloud" Proceedings of the VLDB Endowment 5.8 (2012)[ppt]

后续会介绍GraphLab加强版PowerGraph (v. 2.2)的内容,并介绍其在Spark平台上的克隆GraphX。

Graph计算的背景

  1. Graph可以刻画的范围是很广的,用户和商品之间的关系是一个典型的二部图,pagerank的random walk也是一张图
  2. Graph database(Neo4j,Titan,flockdb)是用于图数据的存储检索,而涉及到复杂的Graph Processing,就适合用graphlab做。
Graph计算的特点

  1. Dependency Graph:MapReduce对于大的data并行任务(Feature Extraction/Cross Validation)是适用的,但data并行系统很难刻画data之间的依赖关系,而这一点在机器学习(Gibbs Sampling,变分法,PageRank,CoEM,Collaborative Filtering等)中非常重要。
  2. Local Updates:在Graph并行系统中,一个结点的值只受相邻结点的影响,因此可以根据局部值就可以做更新。而在data并行系统中是没有Local Updates的概念的,local信息可以加快计算,不同local之间可以做并行。
  3. Iterative Computation:和普通Map-reduce任务不同,图计算天然涉及到迭代计算。更新结点a的时候,对其所有邻居(包括邻居结点b)map,再reduce所有邻居的结果,用得到的值来update结点a的值。然后就可以用结点a的最新值去更新他的结点b了。
GraphLab框架

  1. Graph Based Data Representation:GraphLab将图切成若干子图分布式存储,其中ghost vertex是子图之间的边界点,其上存储了邻接结构以及remote数据的副本,子图之间也是有通信的,因此disk数据共享做备份很困难。
  2. Update Functions:采用的是Asynchronously Dynamic Update,这种动态计算的主要思想是根据vertex的priority更新,每台机器上都有一个优先队列,每次迭代中如果当前vertex变化量不大的话就不再将该点的scope(一步可达的点)入队了,ghost顶点不需要入队。改进空间:可以用排队论优化。
  3. Data consistency:需要保证Race-Free Code,如果计算overlap发生抢跑,就会产生一致性问题。GraphLab在data consistency这方面是最灵活的框架。Edge consistency的思想是one vertex apart的Update Functions才可以并行,而Overlapping regions是只读的。
    此外还可以定制Full consistency(Stronger)和Vertex consistency(Weaker)这两种一致性级别。
    Distributed Consistency问题有两种解决办法 
    1) 图着色(算法复杂,并且可能有些颜色的patirion比较小影响效率) 
    2) Distributed Locking with pipelining(高效,Latency Hiding)
  4. Fault tolerance:GraphLab在这方面做的还不是很好,主要是Chandy-Lamport的asynchronous snapshotting algorithm。
from: http://www.cnblogs.com/wei-li/p/GraphLab.html

十分钟了解分布式计算:GraphLab相关推荐

  1. 十分钟了解分布式计算:GraphX

    GraphX原型论文 GraphX是Spark中用于图(e.g., Web-Graphs and Social Networks)和图并行计算(e.g., PageRank and Collabora ...

  2. 十分钟了解分布式计算:Spark

    Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD的设计思路,及其在内存上的容错.内容基于论文 Zaharia, Matei, et al. "Resili ...

  3. 十分钟了解分布式计算:Petuum

    Petuum是一个机器学习专用分布式计算框架,本文介绍其架构,并基于文章 More Effective Distributed ML via a Stale Synchronous Parallel ...

  4. 十分钟成为 Contributor 系列 | 为 TiDB 重构 built-in 函数

    2019独角兽企业重金招聘Python工程师标准>>> 这是十分钟成为 TiDB Contributor 系列的第二篇文章,让大家可以无门槛参与大型开源项目,感谢社区为 TiDB 带 ...

  5. 用D3.js 十分钟实现字符跳动效果

    用D3.js 十分钟实现字符跳动效果 注 本文基于 D3.js 作者 Mike Bostock 的 例子 原文分为三部分, 在这里笔者将其整合为了一篇方便阅读. 该效果基于 D3.js, 主要使用到了 ...

  6. 飞机的“黑色十分钟”能被人工智能消灭吗?

    [导读]近年来,"AI的应用和落地"逐渐成了具化的关键词,它和很多事物很多行业结合在一起,形成了奇妙的"化学反应".例如,在日常生活中,AI可以推送我们喜欢的新 ...

  7. 十分钟上手2022latex安装与入门

    序言:本次下载是为美赛而用,因此我们选择的下载组合为texlive+texstudio,使用windows10安装.在此提醒大家,类似工具的下载建议大家亲历亲为,不要相信一些诱导性网站,都是非官方的安 ...

  8. 十分钟用Windows服务器简单搭建DHCP中继代理!!

                         十分钟用Windows服务器简单搭建DHCP中继代理!! 一.什么是中继代理? 大家都知道DHCP分配地址都需要用到IP广播,但是广播是不能在两个网段之间进行 ...

  9. 《科学》:媲美AlphaFold2的蛋白质结构预测新工具问世,一台游戏计算机十分钟出结果,完全免费...

    来源:学术头条本文约2000字,建议阅读5分钟 整个研究学界都将受益. 如今,人工智能已经渗透到人们生活的方方面面,各种深度学习算法也越来越多地应用于各个领域.尤其在生物和医学领域,人工智能技术可以说 ...

最新文章

  1. 软件Trimmomatic
  2. 使用原生JS实现简单的ajax
  3. HighNewTech:20190824上海人工智能大会(2019SHAI)暨第二届图像视频处理与人工智能国际会议参会感悟记录
  4. Redis高频面试笔记:mysql8.0新特性
  5. 口腔取模过程及注意事项_康贝齿科首家引进LAUNCA数字化口腔扫描,走进口腔数字化诊疗时代!...
  6. 安卓开发学习笔记(六):如何实现指定图片定时开屏功能?
  7. Oracle循环语句
  8. MIT线性代数习题全解
  9. oracle查询第三个字母是A的员工,oracle_day2 限制查询
  10. er图转关系模式规则_ER模型到关系模型的转换规则
  11. 贝叶斯统计:概率思维的魔法
  12. php导出excel列宽,PHP导出Excel 之 Spreadsheet_Excel_Writer
  13. 为什么剩余数不能相加_为什么花的钱剩下的相加不等于花去的数
  14. Django请求和响应对象
  15. 【前端基础】盒子模型和页面布局总结
  16. android手机应用程序开发,Android手机应用程序开发标准
  17. 实现一个简单的计算器,输入一个包含圆括号、加减乘除、求余等符号组成的算术表达式字符串,输出该算术表达式的值
  18. 广州电子地图下载 来自谷歌电子地图库 地图展示15、17、19级
  19. CSDN 还是一个不错的技术社区
  20. php feff,php编程中要留意的那些坑~

热门文章

  1. Spring Boot:使用Rabbit MQ消息队列
  2. 区块链80%项目靠同一个故事拿钱,但标准链说最坏的时机就是好的开始
  3. 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
  4. 李开复:数位革命——创新创业的黄金时代
  5. Xgboost调参小结
  6. Apache Kafka-事务消息的支持与实现(本地事务)
  7. Oracle-OLAP和OLTP解读
  8. Android-上传图片(-)_HttpURLConnection
  9. docker学习路程之部署一个nginx
  10. print 和 printf 和 println