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 所需要的开销。(多线程模型也有缺点,由于同节点上所有任务运行在一个进程中,因此,会出现严重的资源争用,难以细粒度控制每个任务占用资源)

相关推荐
Lx3521 小时前
Hadoop容错机制深度解析:保障作业稳定运行
大数据·hadoop
计算机毕业设计木哥6 小时前
计算机毕设选题推荐:基于Java+SpringBoot物品租赁管理系统【源码+文档+调试】
java·vue.js·spring boot·mysql·spark·毕业设计·课程设计
T06205146 小时前
工具变量-5G试点城市DID数据(2014-2025年
大数据
向往鹰的翱翔6 小时前
BKY莱德因:5大黑科技逆转时光
大数据·人工智能·科技·生活·健康医疗
鸿乃江边鸟7 小时前
向量化和列式存储
大数据·sql·向量化
IT毕设梦工厂8 小时前
大数据毕业设计选题推荐-基于大数据的客户购物订单数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·数据分析·spark·毕业设计·源码·bigdata
java水泥工8 小时前
基于Echarts+HTML5可视化数据大屏展示-白茶大数据溯源平台V2
大数据·echarts·html5
广州腾科助你拿下华为认证10 小时前
华为考试:HCIE数通考试难度分析
大数据·华为
在未来等你12 小时前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
大数据CLUB15 小时前
基于spark的澳洲光伏发电站选址预测
大数据·hadoop·分布式·数据分析·spark·数据开发