我是靠谱客的博主 无限小刺猬,最近开发中收集的这篇文章主要介绍总结Spark比Hadoop快的原因,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 消除了冗余的HDFS读写

Hadoop的每次shuffle都必须写到磁盘中,而Spark的shuffle不一定写到磁盘中,而是可以缓存到内存中,以便后续的其他迭代操作时直接使用。这样一来,如果任务复杂,需要很多次的shuffle才能完成,那么Hadoop读写磁盘文件时花费在IO上的时间就会大大增加。

2. 消除了冗余的MapReduce阶段

Hadoop的每次shuffle必将连接着一次完成MapReduce操作,而Spark基于RDD提供了丰富的算子操作,而且Spark的shuffle产生的数据可以缓存到内存中。

3.Spark对于JVM的优化

Hadoop的每次MapReduce操作,启动一个Task便会启动一次JVM,是基于进程的操作。而Spark的是基于线程的操作,只在启动Executor时启动一次JVM。每次执行一个Task,都是复用Executor中的线程(Executor中维护着一个线程池)。JVM的每次启动,都将会花费几秒甚至是十几秒的时间,如果Task多了,基于进程的Hadoop Task便会频繁的启动JVM,也就花费了大量启动JVM的时间。

但是,像select month_id,sum(salas) from T group by month_id这样的查询,只发生了一次shuffle操作(group by),Spark需要创建线程池,此时,Hive HQL的运行时间也许比Spark还要块。
结论:Spark快并不是绝地的,在某些情况下,也有MapReduce比Spark快的情况。主要得益与Spark对MapReduce操作的优化以及对JVM使用的优化。

文章参考:https://www.jianshu.com/p/6ca1421b3c47

最后

以上就是无限小刺猬为你收集整理的总结Spark比Hadoop快的原因的全部内容,希望文章能够帮你解决总结Spark比Hadoop快的原因所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部