分布式图计算系统与算法简单文献综述
引言图作为计算机领域一个很重要的数据结构,很多软件算法都是基于图来实现的,随着人们对算力要求的越来越高,硬件算力也已到达瓶颈,单机的图计算系统已经不能满足巨大的计算需求,因此,分布式图计算系统的研究也变得越来越火热。本文简单介绍了当前主流分布式图计算系统和算法的发展历程,并对比了不同分布式图计算框架的优缺点及差异,文章最后在分布式图计算系统与算法领域作了简要总结。......
分布式图计算系统与算法简单文献综述
引言:图作为计算机领域一个很重要的数据结构,很多软件算法都是基于图来实现的,随着人们对算力要求的越来越高,硬件算力也已到达瓶颈,单机的图计算系统已经不能满足巨大的计算需求,因此,分布式图计算系统的研究也变得越来越火热。本文简单介绍了当前主流分布式图计算系统和算法的发展历程,并对比了不同分布式图计算框架的优缺点及差异,文章最后在分布式图计算系统与算法领域作了简要总结。
一、研究背景
现在的互联网环境下,为了应对爆炸式增长的数据和硬件性能的瓶颈,分布式系统大行其道,图计算作为数据挖掘和深度学习的主要手段,分布式的图计算系统尤为重要,可以说,分布式的图计算系统是大规模数据分析与处理的基础,被广泛应用在大图信息挖掘、数据统计分析和数据流检测中。当前主流图计算系统主要分为基于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发消息。该图计算模型有两个特点:
-
BSP(Bulk Synchronous Processing)模型
- 全部计算分成多个超步,超步之间进行全局同步。
- 超步内部全部并行:对多个运算单元进行计算,每个超步内部,所有运算都无依赖地分布式运行。
- 相邻的超步之间存在依赖关系,上一个超步的运算产生下一个超步的输入。
-
基于顶点的编程模型
- 每个顶点有一个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).
更多推荐
所有评论(0)