所有文章 > 正文

分布式计算框架比较:MPI、MapReduce 和GraphLab

作者: 方展鹏

时间: 2019-06-12 15:26

随着网络数据规模的不断增大以及单核运算能力的提升收到限制,计算机运算速度的提升越发依赖并行计算的方式。这也促使了许多和并行计算相关的研究以及很多并行计算框架的出现。

本文将会对现有的三种分布式计算框架MPI、MapReduce 和GraphLab 进行介绍,并在最后进行总结对比。

MPI计算框架

消息传递接口(Message Passing Interface, MPI)[22],是一套专门为并行计算的机器和大规模集群设计的信息传递接口。MPI基于各个计算节点之间的内存并不共享的设定进行设计,通过点对点、群组收集或者群组广播的方式完成信息的交互和同步,同时支持堵塞和非堵塞的通信。虽然MPI专门为大规模的并行计算设计,但是直观地来说也可以认为它实质上就是提供了一套进程之间通信的协议。目前,MPI已经有了C、C++、Fortran、Python 等多种语言实现的版本,广泛地应用到学术界和工业界当中。


MapReduce计算框架

MapReduce是由谷歌公司提出[23],用于大规模数据并行计算的计算框架。 MapReduce计算框架是基于大规模集群的设定进行设计,依赖分布式的文件存储系统对数据进行管理。该框架在进行并行计算时,主要分成Map 和Reduce 两个步骤。


• Map步骤:主运算节点会将一系列的运算任务以若干键值对的方式分配到不同的运算节点。运算节点需要对这些键值对进行处理,并将运算结果映射(Map) 成一系列新的键值对,返回给主运算节点。

• Reduce步骤:主运算节点收集各个运算节点返回的键值对,并对键值相同的键值对组进行合并(Reduce) 操作,得到合并之后的运算结果。

MapReduce计算框架将并行计算需要考虑的任务分布、数据存储、信息交互、数据整合等问题都通过框架后台实现。用户只需要专注于实现Map函数和Reduce函数即可完成并行计算任务。MapReduce有较强的鲁棒性,即使一个节点出现故障,导致分配的任务无法完成,也能自动对任务进行重新分配,确保工作能够继续进行。此外,MapReduce 计算框架专门针对大规模的集群进行设计,即使当集群的机器数目达到上千或者上万级别时,依然能够有效地利用所有计算资源,完成计算任务。


MapReduce广泛地应用于解决各种问题,如访问日志分析、文档聚类[24]、 机器翻译[25] 等。目前,MapReduce 已经有了C++、Java、Python 等多种语言实现的版本,并且在学术界和工业界中都有广泛的应用。

GraphLab计算框架

GraphLab计算框架是由Gonzalez等人[26] 在2010 年提出的并行计算框架,针对在大规模的图上进行的并行计算。该框架以图的顶点为对象进行操作,每个计算周期主要分为Gather 和Scatter 两个步骤。

  • Gather步骤:每个激活的顶点收集(Gather)相邻顶点传递过来的信息,并根据自身信息,对所有信息进行处理。
  • Scatter步骤:每个顶点可以对相邻的顶点传递信息,并且可以激活相邻节点,使其在下一个计算周期中执行Gather步骤。

GraphLab计算框架会自动完成图数据的分布式存储以及Gather 步骤和Scatter 步骤涉及到的顶点与顶点之间的数据通信。此外,该工作的作者已经在GraphLab 框架上实现了一个基于因子保留思想的Belief Propagation算法。

总结

本节对现有的并行计算框架进行了简要的介绍,其中MPI 和MapReduce 这 两个框架的情况比较类似,两者均是通用的并行计算框架,能够解决各种并行计算相关的问题,而且无论是在只有几台机器的小集群上还是在有上万台机器的大集群中,都有不错的表现。这两个框架目前已经应用到并行计算相关的方方面面,可以说是并行计算框架中的基础。由于这两个框架都已经比较成熟, 而且均属于通用的框架,因此本文只选取了其中之一的MPI 框架对随机因子图模型进行实现。

而GraphLab则是一个专门针对图的并行计算框架,虽然目前使用范围与MPI、MapReduce 相比还有不小的差距,但是其对图的针对性使得该框架在处理图相关算法时有其特有便利性。因此本文也在GraphLab 框架上也对提出的模型进行了实现。


[23] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters. Communi- cations of the ACM, 2008, 51(1):107–113

[24] Elsayed T, Lin J, Oard D W. Pairwise document similarity in large collections with MapRe- duce. Proceedings of Proceedings of the 46th Annual Meeting of the Association for Com- putational Linguistics on Human Language Technologies: Short Papers. Association for Computational Linguistics, 2008. 265–268

[25] Dyer C, Cordova A, Mont A, et al. Fast, easy, and cheap: Construction of statistical machine translation models with MapReduce. Proceedings of Proceedings of the Third Workshop on Statistical Machine Translation. Association for Computational Linguistics, 2008. 199–207

[26] Low Y, Gonzalez J, Kyrola A, et al. Graphlab: A new framework for parallel machine learning. arXiv preprint arXiv:1006.4990, 2010.


[关于转载]:本文为“AMiner”官网文章。转载本文请联系原作者获取授权,转载仅限全文转载并保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“AMiner”官网。谢谢您的合作。

二维码 扫码微信阅读
推荐阅读 更多