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

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

一、研究背景

​ 现在的互联网环境下,为了应对爆炸式增长的数据和硬件性能的瓶颈,分布式系统大行其道,图计算作为数据挖掘和深度学习的主要手段,分布式的图计算系统尤为重要,可以说,分布式的图计算系统是大规模数据分析与处理的基础,被广泛应用在大图信息挖掘、数据统计分析和数据流检测中。当前主流图计算系统主要分为基于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).

Logo

更多推荐