校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 开源框架 > spark
题目

spark为什么比hadoop的mr要快?

解答

Spark比Hadoop快的主要原因:在内存核算战略和先进的DAG调度等机制的协助下,Spark能够用更快速度处理一样的数据集。

1.spark基于内存、消除了冗余的HDFS读写 

MapReduce在每次执行时都要从磁盘读取数据,计算完毕后都要把数据存放到磁盘上。 Hadoop每次shuffle(分区合并排序等……)操作后,必须写到磁盘,而Spark是基于内存的。Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。少磁盘IO操作

2.DAG优化操作、消除了冗余的MapReduce阶段

Hadoop的shuffle操作一定连着完整的MapReduce操作,冗余繁琐。map-reduce-map-reduce-map-reduce。而Spark基于RDD提供了丰富的算子操作,DAG调度等机制。它可以把整个执行过程做一个图,然后进行优化。DAG引擎有向无环图,shuffle过程中避免不必要的sort操作、 且reduce操作产生shuffle数据,可以缓存在内存中。

3.JVM的优化、Task启动(线程池)

Spark Task的启动时间快。Spark 使用多线程池模型来减少task启动开稍、Spark采用fork线程的方式,Spark每次MapReduce操作是基于线程的。Spark的Executor是启动一次JVM,内存的Task操作是在线程池内线程复用的。而Hadoop采用创建新的进程的方式,启动一个Task便会启动一次JVM。每次启动JVM的时间可能就需要几秒甚至十几秒,那么当Task多了,这个时间Hadoop不知道比Spark慢了多少。

C 0条回复 评论

帖子还没人回复快来抢沙发