当前位置: 首页 > article >正文

【大数据学习 | 面经】Spark为什么比MR计算更快

1. 内存计算与数据缓存:
   - Spark支持将中间结果缓存在内存中(cache算子可以将数据缓存在内存中,避免大量的重复计算),减少对磁盘I/O的依赖。对于需要反复迭代的数据处理任务,如机器学习算法,这种特性可以极大提高效率。而Hadoop MR每次执行shuffle操作时都会将数据写入磁盘,增加了读写延迟。

2. DAG执行模型:
   - Spark采用了有向无环图(Directed Acyclic Graph, DAG)的任务调度模型,它可以将多个操作组合成一个复杂的作业流,并优化整个流程中的任务执行顺序。相比之下,MR是基于固定的两阶段(Map和Reduce)模型,无法像Spark那样灵活地进行任务间的优化。

3. 减少冗余操作:
   - Spark能够更好地消除冗余的计算步骤,例如通过其丰富的算子集合避免不必要的shuffle操作。MR由于其固有的架构,在某些情况下会强制执行额外的MapReduce阶段,即使这些阶段并不总是必要的。

4. JVM优化:
   - 在Spark中,Executor启动一次JVM后,后续的任务可以在同一个进程中以线程的方式运行,减少了频繁启动JVM带来的开销。而在MR中,每个Task都需要单独启动新的JVM实例,这导致了更高的启动成本。

5. 资源申请粒度:
   - Spark采用粗粒度的资源申请方式,即一旦申请到资源就不会轻易释放,直到整个应用程序结束。这种方式虽然可能导致资源利用率不高,但对于长时间运行的应用来说,它能提供更稳定的性能表现。相反,MR是以细粒度的方式按需申请资源,但这也意味着更多的资源管理和分配开销。

6. **高级API和库支持**:
   - Spark提供了比MR更丰富、更高层次的API,以及一系列内置的库(如MLlib、GraphX等),使得开发者可以更容易编写高效的程序。此外,这些高级抽象有助于自动优化底层实现,进一步提升了性能。

 

综上所述,Spark之所以能在很多场景下表现出优于MR的速度,是因为它结合了内存计算的优势、先进的任务调度机制、精简的操作流程、JVM级别的性能优化以及良好的开发体验。


http://www.kler.cn/a/420408.html

相关文章:

  • burp2
  • L1-049 天梯赛座位分配
  • 我们来学mysql -- 事务并发之脏写(原理篇)
  • MFC工控项目实例三十五读取数据库数据
  • Windows系统搭建Docker
  • 防火墙iptables
  • 解析生成对抗网络(GAN):原理与应用
  • Linux C/C++编程之静态库
  • C语言——宏、预处理、多文件
  • 【WRF-Urban】WPS中有关Urban的变量设置
  • 【大语言模型】ACL2024论文-23 检索增强的多语言知识编辑
  • 按列数据拆分到工作表-Excel易用宝
  • 【HM-React】02. React基础-下
  • CC++ 标准库与标准模板库(STL)简介
  • Flink学习连载文章9--状态(State)
  • 群控系统服务端开发模式-应用开发-邮箱短信通道功能开发
  • 65页PDF | 企业IT信息化战略规划(限免下载)
  • idea中git的将A分支某次提交记录合并到B分支
  • 大模型缩放法则放缓,OpenAI、谷歌、Anthropic推进AI模型创新 | LeetTalk Daily
  • 大数据新视界 -- 大数据大厂之 Hive 数据压缩算法对比与选择(下)(20 / 30)
  • SpringMVC:入门案例
  • 机器学习任务功略
  • 切换python版本;vscode切换版本与cmd版本不一致
  • SpringBoot 助力下的在线家具商城设计与实现之旅
  • SpringBoot 架构下的在线家具商城:规划与实践之路
  • 【webApp之h5端实战】项目基础结构搭建及欢迎页面的实现