Spark与MapReduce的对比(区别)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

从以下几个方面来对比下spark与MapReduce


一、架构

Spark采用的是经典的scheduler/workers模式, 每个Spark应用程序运行的第一步是构建一个可重用的资源池,然后在这个资源池里运行所有的ShuffleMapTask和ReduceTask
MapReduce采用了多进程模型,而Spark采用了多线程模型。多进程模型便于细粒度控制每个任务占用的资源,但会消耗较多的启动时间,不适合运行低延迟类型的作业,这是MapReduce广为诟病的原因之一。而多线程模型则相反,该模型使得Spark很适合运行低延迟类型的作业。

二、速度

spark把中间计算结果存放在内存中,减少迭代过程中的数据落地,能够实现数据高效共享,迭代运算效率高;当然也有部分计算基于磁盘,比如Shuffle,但是其大量Transformation操作,比如单纯的map或者filter等操作可以直接基于内存进行pipeline操作。
mapreduce中的计算中间结果是保存在磁盘上的,产生了大量的I/O操作,效率很低。

三、容错

spark容错性高,因为支持DAG(有向无环图)图的分布式,也叫spark有血缘机制,在计算过程中如果出现问题造成数据丢失,系统不用重新计算,只需要根据血缘关系找到最近的中间过程数据进行计算,而且基于内存的中间数据存储增加了再次使用的读取的速度

补充:spark引进rdd弹性分布式数据集的概念,它是分布在一组节点中的只读对象集合,如果数据集一部分数据丢失,则可以根据血统来对它们进行重建;另外在RDD计算时可以通过checkpoint来实现容错,checkpoint有两种方式,即checkpiont data 和logging the updates。

四、功能

hadoop只提供了map和reduce两种操作,spark提供的操作类型有很多,大致分为转换和行动操作两大类。转换操作包括:map,filter,flatmap,sample,groupbykey,reducebykey,union,join,cogroup,mapvalues,sort,partitionby等多种操作,行动操作包括:collect,reduce,lookup和save等操作。
另外,Spark提供了Spark RDD、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX等技术组件,可以一站式地完成大数据领域的离线批处理、交互式查询、流式计算、机器学习、图计算等常见的任务,所以具有超强的通用性。


版权声明:本文为weixin_41579433原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。