美文网首页大数据开发
大数据开发:分布式计算系统发展历程

大数据开发:分布式计算系统发展历程

作者: 成都加米谷大数据 | 来源:发表于2021-02-05 17:52 被阅读0次

之前我们讲了分布式存储系统的发展历程,今天接着来讲存储之后的下一个重要环节——计算。要从海量的数据集合当中去挖掘出相应的价值,就需要经历计算的过程。今天的大数据开发分享,我们就主要讲分布式计算系统的发展历程。

首先,关于分布式计算,大致也可以分为几个类别:传统基于MSG的系统、MapReduce-like系统、图计算系统、基于状态(State)的系统、Streaming系统。

传统基于MSG的系统:

这类系统里比较有代表性的就是MPI(Message Passing Interface)。目前比较流行的两个MPI实现是MPICH2和OpenMPI。

MPI这个框架非常灵活,对程序的结构几乎没有太多约束,以至于大家有时把MPI称为一组接口API,而不是系统框架。在这些API里最常用的两个就是send和recv接口(还有一系列非阻塞扩展接口,例如:Isend、Irecv等)。

MPI除了提供消息传递接口之外,其框架还实现了资源管理和分配,以及调度的功能。除此之外,MPI在高性能计算里也被广泛使用,通常可以和Infiniband这样的高速网络无缝结合。

除了send和recv接口之外,MPI中另一个接口也值得注意,那就是AllReduce。这个接口在很多机器学习系统开发里都很用。因为很多并行机器学习系统都是各个进程分别训练模型,然后在合适的时候(例如一轮迭代结束)大家同步一下答案,达成共识,然后继续迭代。

这个“达成共识”的操作往往可以很方便地通过AllReduce来完成。AllReduce接口具有两个优点:高效和使用简单。先说说为什么使用简单:使用AllReduce通常只需要在单机核心源码里加入AllReduce一行代码,就能完成并行化的功能。说AllReduce高效的原因是因为其底层消息传递使用了Tree Aggregation,尽可能地将计算分摊到每一个节点。

可是,既然AllReduce这么好,为什么在实际大规模计算中很少看到呢?原因很简单,就是因为MPI不支持容错,所以很难扩展到大规模集群之上。

MapReduce-like系统:

这一类系统又叫作Dataflow系统,其中以MapReduce(Hadoop)和Spark为代表。这一类系统的特点是将计算抽象成为High-Level Operator,例如像Map、Reduce、Filter这样的函数式算子,然后将算子组合成DAG,然后由后端的调度引擎进行并行化调度。其中,MapReduce系统属于比较简单的DAG,只有Map和Reduce两层节点。

MapReduce这样的系统之所以可以扩展到超大规模的集群上运行,就是因为其完备的容错机制。在Hadoop社区还有很多基于MapReduce框架的衍生产品,比如Hive(并行数据库OLAP)、Pig(交互式数据操作)等等。

MapReduce-like的编程风格和MPI截然相反。MapReduce对程序的结构有严格的约束——计算过程必须能在两个函数中描述:Map和Reduce;输入和输出数据都必须是一个一个的Records;任务之间不能通信,整个计算过程中唯一的通信机会是Map Phase和Reduce Phase之间的Shuffuling Phase,这是在框架控制下的,而不是应用代码控制的。因为有了严格的控制,系统框架在任何时候出错都可以从上一个状态恢复。Spark的RDD则是利用Lineage,可以让数据在内存中完成转换。

由于良好的扩展性,许多人都将机器学习算法的并行化任务放在了这些平台之上。比较有名的库包括Mahout(基于Hadoop),以及MLI(基于Spark)。

图计算系统:

图计算系统是分布式计算里另一个分支,这些系统都是把计算过程抽象成图,然后在不同节点分布式执行,例如PageRank这样的任务,很适合用图计算系统来表示。最早成名的图计算系统当属Google的Pregel,该系统采用BSP模型,计算以Vectex为中心。

随后又有一系列图计算框架推出,例如:GPS(对Pregel做了优化,除了Vectex-centric Computation,还有Global Computation,动态调整分区等等。)Giraph/Hama都是基于Hadoop的Apache的开源BSP图计算项目。

除了同步(BSP)图计算系统之外,异步图计算系统里的佼佼者当属GraphLab,该系统提出了GAS的编程模型。目前这个项目已经改名为Dato,专门推广基于图的大规模机器学习系统。

基于状态(State)的系统:

这一类系统主要包括2010年OSDI上推出的Piccolo,以及后来2012年NIPS上Google推出的DistBelief,再到后来被机器系学习领域广泛应用的Parameter Server架构。这里我们重点介绍一下Parameter Server这个架构。

我们之前说,MPI由于不支持容错所以很难扩展至大规模集群之中;MapReduce系统无法支持大模型机器学习应用,并且节点同步效率较低。用图抽象来做机器学习任务,很多问题都不能很好地求解,比如深度学习中的多层结构。

而Parameter Server这种State-Centric模型则把机器学习的模型存储参数上升为主要组件,并且采用异步机制提升处理能力。参数服务器的概念最早来自于Alex Smola于2010年提出的并行LDA架构。它通过采用分布式的Memcached作为存放参数的存储,这样就提供了有效的机制作用于不同Worker节点同步模型参数。

Streaming系统:

Streaming系统听名字就能看出来是为流式数据提供服务的。其中比较有名的系统包括Storm、Spark Streaming、Flink,这也是当下的大数据领域当中,备受重用的几个框架,之前我们也有不少文章分享过了,这里就不再展开。

关于大数据开发,分布式计算系统发展历程,以上就为大家做了大致的介绍了。在大数据领域,分布式计算是重要的支持环节,分布式计算的发展,也会大数据处理带来更多可靠的解决方案。

相关文章

  • 大数据开发:分布式计算系统发展历程

    之前我们讲了分布式存储系统的发展历程,今天接着来讲存储之后的下一个重要环节——计算。要从海量的数据集合当中去挖掘出...

  • 《分布式技术原理与算法解析》学习笔记Day02

    分布式系统发展历程 分布式的发展过程经历了三个阶段: 单机模式(单兵模式) 数据并行或者数据分布式(游击队模式) ...

  • 大数据敲门砖,想入行大数据必须学习这些知识

    基础概念 大数据的本质 一、数据的存储:分布式文件系统(分布式存储) 二、数据的计算:分部署计算 基础知识 学习大...

  • 2019-02-01

    大数据技术的产生以及发展 谷歌的三篇论文 分布式文件系统 GFS大数据分布式计算框架 mapreduceNoSQL...

  • Hadoop概述

    Hadoop简介 Hadoop是由Apache所开发的分布式系统基础架构,是适合海量数据的分布式存储和分布式计算的...

  • 分布式基础-负载均衡

    前言 我理解只所以要分布式系统,无非两个原因数据和计算,单机系统无法保存这么大的数据量,所以要分布式系统来保存; ...

  • 大数据开发:分布式存储系统发展历程

    本质上来说,大数据是指大规模的数据集合,而要实现对这些数据集合的处理,需要经历从数据引入到数据存储,再到数据计算的...

  • NOSql_Hbase简介

    Google发布大数据三大论文:GFS文件系统、MapReduce分布式计算框架及BigTable大表。 GFS-...

  • 并发、并行和分布式(Concurrent, Parallel,

    概述 在复杂的系统开发中,经常会遇到并发编程、高并发、并行计算、分布式系统、分布式计算、分布式存储这些词语,那么这...

  • 大数据基础知识--Hadoop基础

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 主要解决,海量数据的存储和海量数据的分析计算问...

网友评论

    本文标题:大数据开发:分布式计算系统发展历程

    本文链接:https://www.haomeiwen.com/subject/lgdgtltx.html