首页 > 其他分享 >spark为什么比mapreduce快?

spark为什么比mapreduce快?

时间:2024-02-20 16:13:00浏览次数:27  
标签:为什么 DAG shuffle 模型 mapreduce 次数 spark

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

 

作者:京东零售 吴化斌

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

标签:为什么,DAG,shuffle,模型,mapreduce,次数,spark
From: https://www.cnblogs.com/Jcloud/p/18023334

相关文章

  • 在k8S中,K8S持久化可以对接哪些储存,为什么要选择它?
    在Kubernetes(k8s)中,持久化存储可以对接多种类型的存储系统,以满足不同场景下的需求。Kubernetes的设计使得它可以与各种云服务提供商的存储解决方案、本地存储系统以及第三方开源或商业存储产品进行集成。以下是一些常见的存储类型:云服务提供商的块存储/卷:AWSEBS(Elastic......
  • 2月18日 spark实验三 hadoop和spark的安装和使用
    1.安装Hadoop和Spark进入Linux系统,参照本教程官网“实验指南”栏目的“Hadoop的安装和使用”,完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后,再安装Spark(Local模式)。2.HDFS常用操作使用hadoop用户名登录进入Linux系统,启动Hadoop,参照相关Hadoop书籍或网......
  • 2月17日spark实验2 Scala 语言基础
    计算级数请用脚本的方式编程计算并输出下列级数的前n项之和Sn,直到Sn刚好大于或等于q为止,其中q为大于0的整数,其值通过键盘输入。例如,若q的值为50.0,则输出应为:Sn=50.416695。请将源文件保存为exercise2-1.scala,在REPL模式下测试运行,测试样......
  • 【译】 你不是唯一感到AI疲劳的人(或者说:为什么那个新的AI工具不适合你)
    原作:pycoach引言:越多的AI工具,越多的AI疲劳 使用Midjourney制作的图像 ChatGPT时代有前后之分。在OpenAI推出ChatGPT之前,只有少数程序员会涉足创建聊天机器人和用于本地执行的简单模型,也只有机器学习工程师和少数人工智能爱好者会每天使用“人工智能”这个词。202......
  • 在script标签写export为什么会抛错|type module import ES5 ES6 预处理 指令序言 JavaS
    今天我们进入到语法部分的学习。在讲解具体的语法结构之前,这一堂课我首先要给你介绍一下JavaScript语法的一些基本规则。脚本和模块首先,JavaScript有两种源文件,一种叫做脚本,一种叫做模块。这个区分是在ES6引入了模块机制开始的,在ES5和之前的版本中,就只有一种源文件类型(就......
  • 为什么在js中需要添加addEventListener()?
    为什么在js中需要添加addEventListener()?1.What?addEventListener(监听器)---EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上,当该对象触发指定的事件时,指定的回调函数就会被执行。事件目标可以是一个文档上的元素Element、Document和Window,也可以是......
  • 为什么用GPT客服机器人能实现超越外包团队的服务能力?
    淘宝等电商平台的卖家们如何在保持成本效率的同时提供优质服务?一般情况下,商家为了节省客服成本,会去选择一些外包客服公司来来承接日益增长的顾客咨询和售后服务需求,但还是会存在响应延迟、服务质量波动和高运营成本等问题。现在随着AI技术的发展,GPT客服机器人的出现可以很好的帮......
  • 数据可视化为什么能帮助我们打造智慧城市?
    在数字时代的浪潮中,数据可视化崭露头角,为打造智慧城市注入了强大的活力。不再被深奥的数据所束缚,我们通过数据可视化这一工具,可以更加接近智慧城市的未来。下面我就以可视化从业者的角度来简单聊聊这个话题。数据可视化首先为城市带来了深刻的洞察力。通过直观的图表和图形,城市......
  • pyspark集成访问hive数据踩坑记录
    当前环境anaconda3、python3.9.13、jupyter需要安装的pyspark、py4jpyspark和py4j的离线安装包地址Linksforpyspark(tsinghua.edu.cn)和Linksforpy4j(tsinghua.edu.cn)一开我自己没有仔细的对应版本,找了一个pyspark3.4.1的包正常安装上去了,通过pyspark进入shell可以正......
  • DPInst64.exe difxapi64.dll 是什么 为什么
    DPInst64.exe:安装和卸载驱动程序包。默认情况下,该工具将搜索当前目录,并尝试安装找到的所有驱动程序包。用法:C:\Users\Administrator\Desktop\dp\dp\DPInst64.exe[/UINF文件][/S|/Q][/LM][/P][/F][/SH][/SA][/A][/PATH路径][/EL][/L语言ID][/C][/D][/LogTitle标题][/SW][/?......