Spark与MapReduce的区别是什么?

本文对比分析了Spark和MapReduce两种大数据处理框架的差异,包括处理方式、处理速度及资源申请方式的不同。Spark基于内存计算,构建DAG图减少shuffle,而MapReduce基于磁盘,细粒度申请资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark和MapReduce都是可以处理海量数据,但是在处理方式和处理速度上存在着差异,总结如下:

1.spark处理数据是基于内存的,而MapReduce是基于磁盘处理数据的。

  MapReduce是将中间结果保存到磁盘中,减少了内存占用,牺牲了计算性能。

  Spark是将计算的中间结果保存到内存中,可以反复利用,提高了处理数据的性能。
 

2.Spark在处理数据时构建了DAG有向无环图,减少了shuffle和数据落地磁盘的次数

  Spark 计算比 MapReduce 快的根本原因在于 DAG 计算模型。一般而言,DAG 相比MapReduce 在大多数情况下可以减少 shuffle 次数。Spark 的 DAGScheduler 相当于一个改进版的 MapReduce,如果计算不涉及与其他节点进行数据交换,Spark 可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘 IO 的操作。但是,如果计算过程中涉及数据交换,Spark 也是会把 shuffle 的数据写磁盘的!有一个误区,Spark 是基于内存的计算,所以快,这不是主要原因,要对数据做计算,必然得加载到内存,Hadoop 也是如此,只不过 Spark 支持将需要反复用到的数据给 Cache 到内存中,减少数据加载耗时,所以 Spark 跑机器学习算法比较在行(需要对数据进行反复迭代)

3.Spark是粗粒度资源申请,而MapReduce是细粒度资源申请

  粗粒度申请资源指的是在提交资源时,spark会提前向资源管理器(yarn,mess)将资源申请完毕,如果申请不到资源就等待,如果申请到就运行task任务,而不需要task再去申请资源。

  MapReduce是细粒度申请资源,提交任务,task自己申请资源自己运行程序,自己释放资源,虽然资源能够充分利用,但是这样任务运行的很慢。

https://blog.csdn.net/JENREY/article/details/84873874

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值