学科分类
目录
Spark技术栈

Spark与Hadoop对比

Hadoop与Spark两者都是大数据计算框架,但是两者各自都有自己的优势,关于Spark与Hadoop的对比,主要有以下几点:

1. 编程方式

Hadoop的MapReduce在计算数据时,计算过程必须要转化为Map和Reduce两个过程,从而难以描述复杂的数据处理过程;而Spark的计算模型不局限于Map和Reduce操作,还提供了多种数据集的操作类型,编程模型比MapReduce更加灵活。

2. 数据存储

Hadoop的MapReduce进行计算时,每次产生的中间结果都是存储在本地磁盘中;而Spark在计算时产生的中间结果存储在内存中。

3. 数据处理

Hadoop在每次执行数据处理时,都需要从磁盘中加载数据,导致磁盘的IO开销较大;而Spark在执行数据处理时,只需要将数据加载到内存中,之后直接在内存中加载中间结果数据集即可,减少了磁盘的IO开销。

4. 数据容错

MapReduce计算的中间结果数据,保存在磁盘中,并且Hadoop框架底层实现了备份机制,从而保证了数据容错;同样Spark RDD实现了基于Lineage的容错机制和设置检查点两种方式的容错机制,弥补数据在内存处理时断电数据丢失的问题。关于Spark容错机制我们在第三章Spark RDD弹性分布式数据集中将会详细讲解。

在Spark与Hadoop性能对比中,较为明显的缺陷是Hadoop 中的MapReduce计算延迟较高,无法胜任当下爆发式的数据增长所要求的实时、快速计算的需求。接下来,我们通过图1来详细讲解这一原因。

img

图1 Hadoop与Spark执行流程

从图1中可以看出,使用Hadoop MapReduce进行计算时,每次计算产生的中间结果都需要从磁盘中读取并写入,大大增加了磁盘的IO开销,而使用Spark进行计算时,需要先将磁盘中的数据读取到内存中,产生的数据不再写入磁盘,直接在内存中迭代处理,这样就避免了从磁盘中频繁读取数据造成不必要的开销。通过官方计算测试,Hadoop与Spark在执行逻辑斯蒂回归时所需的时间对比,如图2所示。

img

图2 Hadoop与Spark执行逻辑回归时间对比

从图2可以看出,Hadoop与Spark执行所需时间相差超过100倍。

点击此处
隐藏目录