spark 与 mapreduce 对比

Spark 为什么比 MapReduce 快总结

首先澄清几个误区:

1)两者都是基于内存计算的,任何计算框架都肯定是基于内存的,所以说网上所说的 Spark 是基于内存计算所以快,显然是错误的。

2)DAG 计算模型减少的是磁盘 1/0 次数(相比于 MapReduce 计算模型而言),而不是shuffle次数,因为 shuffle 是根据数据重组的数次而定,所以 shufle 次数不能减少。

所以总结 Spark 比MapReduce 快的原因有以下几点:

1)DAG 相比Hadoop 的MapReduce 在大多数情况下可以减少磁盘1/0次数。因为 MapReduce 计算模型只能包含一个Map 和一个Reduce,所以 Reduce 完后必须进行落盘,而DAG 可以连续 shuffle 的,也就是说一个 DAG 可以完成好几个MapReduce,所以DAG 只需要在最后一次reduce 落盘,这就比mapreduce少了,总shuffle 次数越多,减少的落盘次数越多。

2)Spark shuffle 的优化。MapReduce 在 Shuffle 时默认进行排序。Spark 在Shuffle 时则只有部分场景才需要排序 (bypass 机制不需要排序)。排序是非常耗时的,这样就可以加快 shuffle 速度。。

3)Spark 支持将需要反复用到的数据进行缓存。所以对于下次再次使用此 RDD时,不用再次计算,而是直接从缓存中获取,因此可以减少数据加口载耗时,所以更适合需要迭代计算的机器学习算法。

4)任务级别井行度上的不同。MapReduce 采用了多进程模型,而 Spark 采用了多线程模型。多进程模型的好处是便于细粒度控制每个任务占用的资源,但每次任务的启动都会消耗一定的启动时间,即MapReduce 的Map Task和Reduce Task是进程级别的,都是 jvm 进程,每次启动都需要重新申请资源,消耗了不必要的时间。而 Spark Task 则是基于线程模型的,通过复用线程池中的线程来减少启动关闭 task 所需要的开销。(多线程模型也有缺点,由于同节点上所有任务运行在一个进程中,因此,会出现严重的资源争用,难以细粒度控制每个任务占用资源)

相关推荐
Volunteer Technology10 分钟前
Flink的 Side Output侧输出和 ProcessFunction
大数据·flink
roman_日积跬步-终至千里11 分钟前
【SDD】高风险场景下的 SDD 最佳实践:分层风控+分级落地,约束AI编程边界
大数据·人工智能·ai编程
计算机安禾13 分钟前
【算法分析与设计】第36篇:计算几何基础:凸包问题的分治与扫描线解法
大数据·人工智能·算法·机器学习·剪枝
人员安全定位14 分钟前
喜报!品铂科技获2025年度电力建设科学技术进步奖
大数据·人工智能·科技
AI智图坊18 分钟前
拒绝模板同质化:拆解自由生图功能,如何通过GPT-Image-2与Nano Banana Pro双模型驱动电商AIGC?
大数据·人工智能·gpt·ai作画·aigc
AI_yangxi2 小时前
短视频矩阵系统服务商
大数据·人工智能·矩阵
硅谷秋水2 小时前
SkillOpt:自演化智体技能的执行策略
大数据·人工智能·深度学习·机器学习·语言模型
智慧景区与市集主理人3 小时前
传统农场的数字化蝶变:马山百里度假区全域智慧化升级,重构乡村文旅运营逻辑
大数据·人工智能
名不经传的养虾人3 小时前
从0到1:企业级AI项目迭代日记 Vol.38|能演示的系统,和能日常用的系统,差的是这五件事
大数据·人工智能·ai编程·企业ai·多agent协作
小小王app小程序开发3 小时前
陪诊小程序开发功能深度分析:功能架构、业务逻辑与落地要点
大数据·架构