问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么Spark比MapReduce快?

发布网友 发布时间:2022-10-20 18:53

我来回答

1个回答

热心网友 时间:2024-08-19 02:41

MapRece慢是因为 模型很呆板 ,频繁的Io操作

Spark快的话不仅是因为它是内存迭代计算吧? 具体什么是内存迭代计算?

Spark计算比MapRece快的根本原因在于DAG计算模型。一般而言,DAG相比Hadoop的MapRece在大多数情况下可以减少shuffle次数(怎么体现?)。

Spark的DAGScheler相当于一个改进版的MapRece,如果计算不涉及与其他节点进行数据交换,Spark可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘IO的操作。

但是,如果计算过程中涉及数据交换,Spark也是会把shuffle的数据写磁盘的!!!

另外有同学提到,Spark是基于内存的计算,所以快,这也不是主要原因,要对数据做计算,必然得加载到内存,Hadoop也是如此,只不过Spark支持将需要反复用到的数据给Cache到内存中,减少数据加载耗时,所以Spark跑机器学习算法比较在行(需要对数据进行反复迭代)。Spark基于磁盘的计算依然也是比Hadoop快。

刚刚提到了Spark的DAGScheler是个改进版的MapRece,所以Spark天生适合做批处理的任务。而不是某些同学说的:Hadoop更适合做批处理,Spark更适合做需要反复迭代的计算。Hadoop的MapRece相比Spark真是没啥优势了。但是他的HDFS还是业界的大数据存储标准。

1、Spark vs MapRece ≠ 内存 vs 磁盘

其实Spark和MapRece的计算都发生在内存中,区别在于:

MapRece通常需要将计算的中间结果写入磁盘,然后还要读取磁盘,从而导致了频繁的磁盘IO。

Spark则不需要将计算的中间结果写入磁盘,这得益于Spark的RDD(弹性分布式数据集,很强大)和DAG(有向无环图),其中DAG记录了job的stage以及在job执行过程中父RDD和子RDD之间的依赖关系。中间结果能够以RDD的形式存放在内存中,且能够从DAG中恢复,大大减少了磁盘IO。

2、Spark vs MapRece Shuffle的不同

Spark和MapRece在计算过程中通常都不可避免的会进行Shuffle,两者至少有一点不同:

MapRece在Shuffle时需要花费大量时间进行排序,排序在MapRece的Shuffle中似乎是不可避免的;

Spark在Shuffle时则只有部分场景才需要排序,支持基于Hash的分布式聚合,更加省时;

3、多进程模型 vs 多线程模型的区别

这俩根本没啥可比的,能够单MR做完的任务,Spark未必比MR快。至于迭代不迭代的并不是关键,其实你在Mapper里对数据做N个操作基本等价于N个窄依赖RDD的连接。

所以说真要比,也是多个MR组成的复杂Job来和Spark比。

MR由于其计算粒度的设计问题,在进行需要多次MR组合的计算时,每次MR除了Shuffle的磁盘开销外,Rece之后也会写到磁盘。

而Spark的DAG实质上就是把计算和计算之间的编排变得更为细致紧密,使得很多MR任务中需要落盘的非Shuffle操作得以在内存中直接参与后续的运算,并且由于算子粒度和算子之间的逻辑关系使得其易于由框架自动地优化(换言之编排得好的MR其实也可以做到)。

另外在进行复杂计算任务的时候,Spark的错误恢复机制在很多场景会比MR的错误恢复机制的代价低,这也是性能提升的一个点。

迭代计算是spark最开始亮相时的看家本领,第一是避免了不必要的数据落盘,第二则是容错的机制以及缓存节点的合理搭配使得重计算的代价低很多,而且缓存可以在内存。mr和spark都是分片后读数据的,这点没什么区别。至于快100倍……论文这种东西

要想明白这个问题,需要对maprece的运算模型有所理解

maprece模型(不完全等同maprece框架哦),是一个分布式运算模型;它的思想可以通过一个简单的wordcount例子来说明:

需求:有大量的文件,需要统计这些文件中每一个单词出现的次数

在分布式计算里面:

上述过程,就被抽象成了两个运算过程,第一批task属于map过程,而第二批task属于rece过程

好,现在可以讲maprece框架和spark的区别了

所以,spark比maprece快,就是上述的2/3两点

减少磁盘 I/O:随着实时大数据应用越来越多,Hadoop 作为离线的高吞吐、低响应框架已不 能满足这类需求。Hadoop MapRece 的 map 端将中间输出和结果存储在磁盘中,rece 端 又需要从磁盘读写中间结果,势必造成磁盘 IO 成为瓶颈。Spark 允许将 map 端的中间输出 和结果存储在内存中,rece 端在拉取中间结果时避免了大量的磁盘 I/O。

增加并行度:由于将中间结果写到磁盘与从磁盘读取中间结果属于不同的环节,Hadoop 将 它们简单的通过串行执行衔接起来。Spark 把不同的环节抽象为 Stage,允许多个 Stage 既可 以串行执行,又可以并行执行

避免重新计算:当 Stage 中某个分区的 Task 执行失败后,会重新对此 Stage 调度,但在重新 调度的时候会过滤已经执行成功的分区任务,所以不会造成重复计算和资源浪费。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有双方签字的离婚协议书是否可以作为感情破裂的证据 苏州创鑫激光多久转一次班 马上要入职苏州创鑫激光了,有什么要注意的吗? 2024年元宵节是几月几号星期几-2024年元宵节是哪一天 搜狐新闻是怎么赚钱的,搜狐新闻赚钱能提现 我的网络是通过DHCP指派,我现在想装一个迅捷Fw300R的无线路由器,求路由... 东莞市有哪些共享汽车 东莞旅游包车 哪家公司的旅游大巴车况好? 庆铃五十铃水温问题 汽车水温表怎么看才是正常? Spark Join 的三种方式 北京公交线路查询去高米店的957是哪一条 文本近似hash 从大兴到来广营最快的路线 Spark之SortShuffle原理参考 详解Spark 中的 Bucketing 哪位大神知道胡歌浏览器怎么被挡住色块了不能操作了 给“融”字换个偏旁,组成一个新字。注:融的偏旁是虫 注字换个偏旁是什么字 怀念赵丽蓉,单膝一跪成经典,台上满堂喝彩,台下儿子抱头痛哭 赵丽蓉与巩汉林 戏假情真的母子情 有种感恩叫“赵妈” 初入职场的大学生,从事销售工作,师傅有点排挤意思,怎么办 章子怡的身高和体重 章子怡 身高吧 一入职场深入海,从此休息是路人.是什麽意思? 谁说HR在职场中不委屈 章子怡真实身高 请问贵阳哪里有二手车市场 朋友聊天中时用的广西桂林的几句方言·求翻译~~~ 如何用软件将白话说成东北话广西话 “人生若只如初见”出自哪个电视剧,哪部电视剧中出现过这首诗或这句话... 安意如《人生若只如初见》中写班婕纾的“她有无艳之贤”无艳是个人名... 《人生若只如初见》一共有几种版本 有机玻璃可以再加工么? 那英目中无人骂赵丽颖小妖精,赵丽颖如何“高情商”回应她的?_百度知 ... 万万没想到小妖精是谁扮演的 连续两个月排卵期出血怎么办啊 上个月就来了两次月经 这又是半月就来... 小班《投掷之家》区角活动设计方案 哪个蔬菜有营养 蔬菜哪个部位营养最高 一道法律常识题 大班数学教案:自然测量 帮忙归类一下词语:繁花似锦、鸟语花香、地动山摇、气吞山河……_百度知... 月经推迟按什么时间算 福州有哪些二元一票制公交线路 博比肯尼迪简介 【一首歌】同桌的你 这里的山峰形态各异,有的什么有的什么? 这里的山峰形态各异,有的像什么?有的像什么? 两岸的山峰形状各异有的像什么有的像什么还有的像什么?