allbet电脑版下载:谈谈Hadoop MapReduce和Spark MR实现

谈谈MapReduce的观点、Hadoop MapReduce和Spark基于MR的实现

什么是MapReduce?

MapReduce是一种分布式海量数据处置的编程模子,用于大规模数据集的并行运算。

有以下几个特点:

  • 分而治之,并行处置。

    抽象了map和reduce的盘算流程,对于分布式存储的数据可以并行的举行map处置,之后在reduce端对map效果举行汇总。

  • 移动盘算而非移动数据。

    数据的盘算传输需要大量的磁盘和网络IO。MapReduce会只管在数据存储的节点执行盘算,以削减不必要的开销。

Hadoop MapReduce

我们常说的MapReduce就是Hadoop MapReduce。

Hadoop MapReduce作业被分成一系列运行在分布式集群中的map义务和reduce义务,每个义务都事情在被指定的小的数据自己上,因此负载是遍布集群中各个节点上的。

map义务卖力数据的载入、剖析、转换和过滤。MapReduce作业的输入是一系列储存在HDFS中的文件。map义务的输出被称为中心键和中心值,会被发送到reduce端举行后续处置。

每个reduce义务卖力处置map义务输出效果的一个子集。MapReduce确保每个reduce的输入都是按键排序的。

系统执行排序、将map输出作为输入传递给reduce的历程称为shuffle。shuffle是MapReduce的心脏,关于shuffle详情请自己搜索。


Pig和Hive都是对MapReduce更高条理的抽象,他们都会将高级的语言翻译成一组MapReduce作业,执行盘算。

Spark基于MapReduce实现

Spark通过借鉴Hadoop MapReduce,继续了其分布式并行盘算的优点,并改进了MapReduce的一些瑕玷。

Spark并行处置主要基于其内部RDD和DAG来实现。

RDD(弹性分布式数据集):作为Spark基本编程模子,它是MapReduce模子的扩展和延伸。其运用高效的数据共享观点(分区)和类似MapReduce的操作方式,使得并行盘算能高效的举行。

DAG(有向无环图):Spark使用DAG形貌了RDD的依赖关系(宽/窄依赖),维护了RDD间的血缘关系,削减了迭代历程中数据的落地,提高了处置效率。


我们提交一个Spark代码,也许执行流程如下:

  1. 凭据行动操作划分job
  2. 每个job内部凭据宽依赖划分stage。stage分为ShuffleMapStage和ResultStage。
  3. 执行stage内部的task。每个stage内部会有许多task,task是Spark的最小执行单元,task的数目取决于RDD的分区数目,spark会优先选择数据所在的节点启动task。task分为ShuffleMapTask和ResultTask。ShuffleMapTask返回输出效果相关信息供后续task使用;ResultTask凭据效果巨细,会选择抛弃或者返回给Driver端。
  4. ......

从上面流程,我们可以简朴总结:

  • Spark通过RDD的分区,来保证MR中的并行处置
  • Spark通过DAG宽窄依赖,优化了task盘算流程,削减了数据落盘的次数
  • Spark中也会保障数据本地化,来实现移动盘算而非移动数据。

Spark与MapReduce对照

  1. Spark会中心数据放在内存中,迭代运算效率高。MapReduce的中心盘算效果保存在磁盘上,势必影响整体的运行速率。
  2. Spark的容错性高。Spark的RDD可以凭据血统来重新天生数据,也可以通过checkpoint来实现容错。
  3. Spark加倍的通用。Spark提供了许多的算子,可以更便捷的处置数据。

参考

《MapReduce设计模式》

《Hadoop权威指南》

《图解Spark核心技术与案例实践》


参考书籍+小我私家明白,若有误差,迎接交流。

,

www.px111.net

欢迎进入平心在线官网(原诚信在线、阳光在线)。平心在线官网www.px111.net开放平心在线会员登录网址、平心在线代理后台网址、平心在线APP下载、平心在线电脑客户端下载、平心在线企业邮局等业务。