Spark 为啥比 MapReduce 快?

本文探讨了Spark比MapReduce更快的原因,包括DAG优化、内存管理和Shuffle过程的差异。Spark利用丰富的算子、DAG执行计划、内存缓存以及更高效的Shuffle机制,减少了磁盘I/O和不必要的排序,从而提高了性能。
摘要由CSDN通过智能技术生成

Spark 为啥比 MapReduce 快?

DAG优化 和 内存

(1) 算子灵活性:MR只支持Map和Reduce 两种操作,而Spark有丰富的算子。

(2) Map 中间结果写磁盘,Reduce 写HDFS,多个MR之间通过HDFS交换数据。

(3) DAG引擎,先划分为Stage,Stage之间才Shuffle落盘,Stage之内,都可以内存处理。

(4) spark 中的rdd数据可以缓存到内存中,充分使用内存,多次使用,减少IO。

进程和线程

(1) MR的任务调度和启动都是进程级别的,每个进程都是JVM,资源和时间开销都很大。

(2) spark开启的JVM是Driver和Executor,每个Executor内部可以在每个core上都生成一个task,spark的task是基于线程的,线程池模型有效减少task的启动开销,一个executor上可以占用多个core,每最终task并行度为executor * core的数量。

Shuffle

(2) MR的Map端和Reduce端均需要排序。Spark在Shuffle过程中,尽量避免不必要的Sort操作。

一、Spark算子 VS MapReduce算子

MR只有Map 和 Reduce 两种操作。而spark基于RDD构建了丰富的算子。

RDD:Resilient Distribute DataSets,分布式弹性数据集

(1)RDD是分布于集群中的,有多个Partition组成的只读对象集合。

分区数的确定

(2)支持内存、磁盘等多种存储级别。

(3)通过并行的 Transform 操作,逐步构建需要的结果。

(4)通过Lineage血统体系,支持自动重构。

Transform操作:生成新的RDD

PartitionBy ,map, filter,groupBy,reduceBy ,reduceByKey

Action 操作:获取一个或者一组值

count,reduce,saveAsTextFile

## 二、Spark Shuffle VS MR Shuffle

MapReduce Shuffle过程

MapReduce Shuffle过程

1、首先 map 在做输出时候会在内存里开启一个环形内存缓冲区,专门用来做输出,同时map还会启动一个守护线程;

2、如缓冲区的内存达到了阈值的80%,守护线程就会把内容写到磁盘上&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值