Spark和MR的区别

自己总结

  • MR是基于进程,spark是基于线程
  • Spark的多个task跑在同一个进程上,这个进程会伴随spark应用程序的整个生命周期,即使没有作业进行,进程也是存在的
  • MR的每一个task都是一个进程,当task完成时,进程也会结束
  • 所以,spark比MR快的原因也在这,MR启动就需要申请资源,用完就销毁,但是spark把进程拿到以后,这个进程会一直存在,即使没有job在跑,所以后边的job可以直接启动,不需要再重新申请资源
  • 速度

spark把运算的中间数据存放在内存,迭代计算效率更高;MR的中间结果需要落地,需要保存到磁盘,这样必然会有磁盘IO操作,影响性能

  • 容错性

spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在节点内存中的只读性质的数据集,这些集合石弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建;MR的话容错可能只能重新计算了,成本较高

  •  适用面

spark更加通用,spark提供了transformation和action这两大类的多个功能的api,另外还有流式处理sparkstreaming模块,图计算GraphX等;MR只提供了map和reduce两种操作,流计算以及其他模块的支持比较缺乏

  • 框架和生态

 Spark框架和生态更为复杂,首先由RDD、血缘lineage、执行时的有向无环图DAG、stage划分等等,

很多时候spark作业都需要根据不同的业务场景的需要进行调优,以达到性能要求,MR框架及其生态相对较为简单,对性能的要求也相对较弱,但是运行较为稳定,适合长期后台运行

 

  • 运行环境:

MR运行在YARN上,

spark

  1. local:本地运行
  2. standalone:使用Spark自带的资源管理框架,运行spark的应用
  3. yarn:将spark应用类似mr一样,提交到yarn上运行
  4. mesos:类似yarn的一种资源管理框架

 参考博客

原文:https://blog.csdn.net/zx8167107/article/details/79086864

posted @   任重而道远的小蜗牛  阅读(6462)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示