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

spark为什么比mapreduce快?

spark为什么比mapreduce快?

首先澄清几个误区:

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

2;DAG计算模型减少的是磁盘I/O次数(相比于mapreduce计算模型而言),而不是shuffle次数,因为shuffle是根据数据重组的次数而定,所以shuffle次数不能减少

所以总结spark比mapreduce快的原因有以下几点:

1:DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数

因为mapreduce计算模型只能包含一个map和一个reduce,所以reduce完后必须进行落盘,而DAG可以连续shuffle的,也就是说一个DAG可以完成好几个

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

作者:京东零售 吴化斌

来源:京东云开发者社区 转载请注明来源

http://www.lryc.cn/news/306945.html

相关文章:

  • Unity通过XXpermission插件获取MANAGE_EXTERNAL_STORAGE权限
  • 「连载」边缘计算(二十一)02-26:边缘部分源码(源码分析篇)
  • Unity(第四部)新手组件
  • 【JS】【Vue3】【React】获取鼠标位置的方法:JavaScript、Vue 3和React示例
  • [Docker 教学] 常用的Docker 命令
  • 小程序应用、页面、组件生命周期
  • Springboot中如何记录好日志
  • vm 虚拟机中ubuntu环境配置共享文件夹的方式
  • EMQX Enterprise 5.5 发布:新增 Elasticsearch 数据集成
  • 安全架构设计理论与实践
  • SQL注入漏洞解析--less-46
  • 【算法与数据结构】回溯算法、贪心算法、动态规划、图论(笔记三)
  • 【pytorch】常用代码
  • GB28181 —— Ubuntu20.04下使用ZLMediaKit+WVP搭建GB28181流媒体监控平台(连接带云台摄像机)
  • 图片录入设备、方式与质量对图片转Excel的影响
  • Linux:ACL权限,特殊位和隐藏属性
  • FL Studio21中文版本价格多少?值不值得购买?
  • 【论文阅读】ICCV 2023 计算和数据高效后门攻击
  • JavaAPI常用类03
  • SpringBoot/Java中OCR实现,集成Tess4J实现图片文字识别
  • 【深度学习目标检测】十九、基于深度学习的芒果计数分割系统-含数据集、GUI和源码(python,yolov8)
  • 骑砍战团MOD开发(48)-多人联机模式开发环境搭建
  • Java+SpringBoot+Vue+MySQL:美食推荐系统的技术革新
  • 【服务发现--ingress】
  • Yolov8有效涨点:YOLOv8-AM,添加多种注意力模块提高检测精度,含代码,超详细
  • 苹果分拣检测YOLOV8NANO
  • 使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212
  • 戏说c语言文章汇总
  • 面试redis篇-12Redis集群方案-分片集群
  • 【Java EE初阶二十三】servlet的简单理解