分布式图计算系统与算法简单文献综述

​ 引言:图作为计算机领域一个很重要的数据结构,很多软件算法都是基于图来实现的,随着人们对算力要求的越来越高,硬件算力也已到达瓶颈,单机的图计算系统已经不能满足巨大的计算需求,因此,分布式图计算系统的研究也变得越来越火热。本文简单介绍了当前主流分布式图计算系统和算法的发展历程,并对比了不同分布式图计算框架的优缺点及差异,文章最后在分布式图计算系统与算法领域作了简要总结。

一、研究背景

​ 现在的互联网环境下,为了应对爆炸式增长的数据和硬件性能的瓶颈,分布式系统大行其道,图计算作为数据挖掘和深度学习的主要手段,分布式的图计算系统尤为重要,可以说,分布式的图计算系统是大规模数据分析与处理的基础,被广泛应用在大图信息挖掘、数据统计分析和数据流检测中。当前主流图计算系统主要分为基于MapReduce的图计算系统和以顶点为中心的图计算系统两类,其中基于MapReduce的图计算系统代表有 Pegasus和Microsoft Dryad,基于以顶点为中心的图计算系统代表有Pregel和GraphLab,他们各有自己的优缺点和应用场景。

二、基于MapReduce的图计算系统

​ 基于MapReduce的图计算系统核心还是MapReduce,之后的一系列系统框架都在MapReduce的基础上扩展。

1.MapReduce

​ 基于MapReduce的图计算系统于2004年由google公司的Jeffrey Dean和Sanjay Ghemawat等人首次提出[1],并且以Hadoop作为MapReduce的第一个开源实现,目前已被Yahoo、Facebook、 Twitter、腾讯和百度等公司广泛应用。MapReduce的整体设计思路是编写串行程序,由系统来完成并行分布式的执行,编写者保证串行程序的正确性,编程序时不需要思考并行的问题,调试时只需要保证串行执行正确。

​ MapReduce主要分为两步,Map和Reduce,其中MapReduce的数据结构为<key,value>键值对形式,以下为MapReduce的算法简图:

​ 其中,Shuffle由系统完成,用于key分组,对于所有的map函数的输出进行分组,将相同mk的所有mv都一起提供给Reduce模块,编写者只需编制串行的Map函数和Reduce函数,系统完成shuffle功能,以下为MapReduce在WordCount(统计文本中每个单词出现的次数)中的举例应用流程图:

​ 虽然MapReduce提高了程序的分布式执行的正确率及效率,但是间接牺牲了程序功能的灵活性。

2. Microsoft Dryad

​ Dryad于07年由Microsoft公司Isard M[2]等人提出,是对MapReduce模型的一种扩展。其组成单元不仅是Map和Reduce,可以是多种节点节点之间形成一个有向无环图DAG(Directed Acyclic Graph) ,以表达所需要的计算,同时节点之间的数据传输模式更加多样,它比MapReduce更加灵活,但也更复杂。

3. Pegasus

​ Pegasus于09年由U. Kang等人[3]提出的PB级别的大图挖掘系统,其本质还是基于MapReduce模型的一种扩展,使用矩阵与向量相乘的方式进行Map与Reduce的模块运算。

三、以顶点为中心的图计算系统

​ 以顶点为中心的图计算系统依赖于自身顶点和周围顶点的计算,它的设计初衷是交互式图形处理。

1. Pregel

​ Pregel图计算模型于10年由Grzegorz等人[4]提出,Pregel将图计算的运算分成多个超步,在超步内并行执行每个顶点,在超步间实现全局同步;该图计算框架定义了以顶点为中心的图计算系统的基本步骤:1.接收上个超步发出的in‐neighbor的消息 2. 计算当前顶点的值 3. 向out‐neighbor发消息。该图计算模型有两个特点:

  1. BSP(Bulk Synchronous Processing)模型

    • 全部计算分成多个超步,超步之间进行全局同步。
    • 超步内部全部并行:对多个运算单元进行计算,每个超步内部,所有运算都无依赖地分布式运行。
    • 相邻的超步之间存在依赖关系,上一个超步的运算产生下一个超步的输入。
  2. 基于顶点的编程模型

    • 每个顶点有一个value。
    • 顶点为中心的运算:编码者可以实现一个Compute函数,在每个超步中,同步图系统对每个顶点调用一次Compute,Compute通常接收消息,计算,然后发送消息。

​ 该图计算框架将顶点分为两种状态:活跃态Active和非活跃态Inactive,图系统只对活跃顶点调用compute,compute调用Volt to halt时,顶点变为非活跃态,当所有的顶点都处于非活跃状态时,图系统结束本次图运算。Pregel图计算模型可以轻松解决多种大规模图计算问题,如Page Rank、图着色、最大强连通分量和最短路径等。

2. GraphLab

​ 上面介绍的Pregel图计算模型虽然直观简单,但也存在很多效率问题,比如整个Pregel图计算模型是串行的,也就是说每个节点计算是同步的,这必然会造成一个“木桶效应”,即每一轮的运行时间取决于计算最慢的那个节点,以下为Pregel图计算模型问题示意图:

​ GraphLab图计算模型于10年由Yucheng Low等人[5]提出,其在Pregel图计算模型的基础上改进,与Pregel图计算模型不同的是,GraphLab图计算模型的节点计算是异步的,节点间获取邻居节点信息的方式是pull操作,节点之间的运算互不关联,计算成功之后直接pull即可,此时提出的模型版本还是基于共享堆内存的;受硬件发展影响,内存计算开始兴起,于12年Yucheng Low等人[6]又在之前基础上改进提出基于分布式内存计算的GraphLab图计算模型,使得大规模图计算模型的效率又上升一个阶梯。

​ 整个GraphLab图计算模型可以看成两个模型:GAS (Gather, Apply, Scatter)模型; Pull 模型,大致分为三个阶段:

  • 节点更新阶段:更新本身节点和邻居节点的信息
  • 程序调度阶段:定义计划更新的顶点之间的顺序
  • 一致性控制阶段:确保可序列化

​ 整个GraphLab图计算模型的框架示意图如下:

四、基于MapReduce的图计算系统和以顶点为中心的图计算系统对比

1. MapReduce与PREGEL对比

名称 MapReduce PREGEL
信息传递 需要传递整个图 每个节点仅将其状态发送给其邻居
信息存储 每次结果保存到磁盘,需要时读取 基于内存计算
编程方式 需要编写驱动程序支持迭代的程序 supersteps和主客户端的使用架构使编程变得简单

2. PREGEL和GraphLab对比

名称 PREGEL GraphLab
系统类型 同步系统 异步系统
并发控制 无并发控制,无需担心一致性 有并发控制,具有更严格的一致性检查
出错恢复 易于容错、检查,定位每个故障点 需要快照,容错性较差
耗时 耗时较多 耗时相对较少

五、当前主要应用的图计算系统

​ 当前主要应用的图计算系统大多都是基于以上模型开发的[7],如Hive系统就是将MapReduce和SQL结合开发的数仓管理系统,简化了编写者编写MapReduce的过程;数据流系统Storm和消息日志系统Kafka是在GraphLab图计算模型的程序调度器基础上开发的;SPARK是也是受GraphLab启发开发的基于内存计算的大数据系统。

引用文献:

[1] Jeffrey Dean, Sanjay Ghemawat: MapReduce: Simplified Data Processing on Large Clusters. OSDI 2004: 137-150

[2] Isard M , Budiu M , Yu Y , et al. Dryad: distributed data-parallel programs from sequential building blocks[C]// European Conference on Computer Systems. ACM, 2007.

[3] U. Kang, Charalampos E. Tsourakakis, Christos Faloutsos: PEGASUS: A Peta-Scale Graph Mining System. ICDM 2009: 229-238

[4] Grzegorz Malewicz, Matthew H. Austern, Aart J. C. Bik, James C. Dehnert, Ilan Horn, Naty Leiser, Grzegorz Czajkowsk: Pregel: a system for large-scale graph processing. SIGMOD Conference 2010: 135-146

[5] Jump up Y. Low, J. Gonzalez, A. Kyrola, D. Bickson, C. Guestrin and J. Hellerstein. GraphLab: A New Framework for Parallel Machine Learning. In the 26th Conference on Uncertainty in Artificial Intelligence (UAI), Catalina Island, USA, 2010.

[6] Yucheng Low, Joseph Gonzalez, Aapo Kyrola, Danny Bickson, Carlos Guestrin and Joseph M. Hellerstein (2012). “Distributed GraphLab: A Framework for Machine Learning and Data Mining in the Cloud.” Proceedings of Very Large Data Bases (PVLDB).

[7] T. Ramalingeswara Rao,Pabitra Mitra,Ravindara Bhatt,A. Goswami. The big data system, components, tools, and technologies: a survey[J]. Knowledge and Information Systems,2019,60(3).

分布式图计算系统与算法简单文献综述相关推荐

  1. 分布式数据流计算系统的数据缓存技术综述

    点击上方蓝字关注我们 分布式数据流计算系统的数据缓存技术综述 袁旭初, 付国, 毕继泽, 张岩峰, 聂铁铮, 谷峪, 鲍玉斌, 于戈 东北大学计算机科学与工程学院,辽宁 沈阳 110169 论文引用格 ...

  2. 使用分布式图计算系统实现研报关键词权重分数计算性能提升百倍以上

    使用图计算系统实现研报关键词权重分数计算性能提升百倍以上 使用图计算系统实现研报关键词权重分数计算性能提升百倍以上 一.数据模型 二.TF-IDF算法 三.计算过程 3.1 指定研报和关键词计算TF- ...

  3. [NSDI 17] TuX2: 面向机器学习的分布式图计算系统 学习总结

    今天要讲的文章NSDI 2017年的一篇文章,TUX2: Distributed Graph Computation for Machine Learning.本文主要想解决的问题就是:在图形引擎(如 ...

  4. GraphX:基于Spark的弹性分布式图计算系统

    1 引言 在了解GraphX之前,需要先了解关于通用的分布式图计算框架的两个常见问题:图存储模式和图计算模式. 1.1    图存储模式 巨型图的存储总体上有边分割和点分割两种存储方式.2013年,G ...

  5. 【图计算系统】小白入门(一):图计算系统的基本概念、开源框架及其应用

    图计算系统的基本概念.开源框架及其应用 一.图结构概论: 1.1什么是图? 1.2 图处理的难点: 1.3 图储存方式: (1) 邻接矩阵: (2) 邻接表: (3) 十字链表(有向图): (4) 邻 ...

  6. 图计算系统进展和展望

    文 / 成杰峰,刘勤,李震国 本文为<程序员>原创文章,未经允许不得转载,更多精彩文章请订阅2017年<程序员> 挖掘大规模图数据能增强现有商业业务,甚至产生新的商业模式.然而 ...

  7. 明风:分布式图计算的平台Spark GraphX 在淘宝的实践

    快刀初试:Spark GraphX在淘宝的实践 作者:明风 (本文由团队中梧苇和我一起撰写,并由团队中的林岳,岩岫,世仪等多人Review,发表于程序员的8月刊,由于篇幅原因,略作删减,本文为完整版) ...

  8. 物流配送和算法文献综述

    物流配送和算法文献综述 小编:这里给大家介绍一篇物流配送的英文综述 链接:https://doi.org/10.1007/s12351-020-00600-7 文章目录 物流配送和算法文献综述 摘要 ...

  9. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

最新文章

  1. Nature:大脑空间导航研究五十年
  2. 在ie6下实现position-fixed的效果--------续集---对联效果(02)
  3. c++第n小的质数_形形色色的素数 -- 质数定理
  4. Linux系统管理(7)——Linux单用户模式详解 及应用场景
  5. eclipse中误删除的java文件 代码如何恢复
  6. 20190819:(leetcode习题)字符串中的第一个唯一字符
  7. 运维学python perl go_公开课|一个小运维的《Golang 入门心路历程》
  8. python中文显示不出来_彻底解决Python里matplotlib不显示中文的问题
  9. # JDK7+ MethodHandle
  10. python按照日期筛选excel_用python判断Excel单元格格式为输出日期(日期字段位置不固定)的,按datetime格式输出日期(而非float)_python excle 日期列...
  11. 长链接(MQTT)测试及工具MQTTX使用
  12. 信息化为五万教学点带来“优质教师”
  13. 对称加密算法(DES、3DES、AES)
  14. 软件测试kpi绩效考核表,测试工程师绩效考核表.xls
  15. 修改阿拉伯语等语言下的数字显示
  16. html match函数,match函数 Match函数概述
  17. 万恶之源的hello world
  18. Arcgis 空间分析—学校选址
  19. 第10章 大数据与云数据库管理
  20. 地理信息系统的元数据、主数据、参考数据之间的区分

热门文章

  1. c语言源代码闪烁的红五星,c语言实现飘动的红五星(C language with red).doc
  2. 国家发布电子病历共享文档规范
  3. Javascript(JS) leetcode 954. 二倍数对数组
  4. 腾讯游戏云以科技连接游戏未来,全力打造行业新生态
  5. 'cnpm' 不是内部或外部命令,真正有效解决方法
  6. keil5打开kil4工程不兼容 device无法选择芯片
  7. 英语影视台词---三、Cinema Paradiso
  8. 计算机毕业的人有很多不从事IT行业
  9. 有关projecteuler题库621题的lisp解答,萌新求围观。
  10. HTML5自定义属性对象Dataset简介(data-xxx)