我是靠谱客的博主 跳跃云朵,最近开发中收集的这篇文章主要介绍面试必备——Spark为什么比Hadoop快,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

大数据工程师都喜欢拿Spark和Hadoop进行对比。在大数据开发面试中,我们也会经常说到Hadoop Spark这两个常用框架。当我们被问到为什么Spark比Hadoop快时,大多数人一般的理解就是:Spark是基于内存的计算,而Hadoop是基于磁盘的计算;Spark是一种内存计算技术

果真如此吗?事实上,不光Spark是内存计算,Hadoop其实也是内存计算。Spark和Hadoop的根本差异是多个任务之间的数据通信问题:Spark多个任务之间数据通信是基于内存,而Hadoop是基于磁盘。
在进行sql进行数据查询时,Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎一定比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。

什么是内存计算技术?

内存计算技术是指将数据持久化至内存RAM中进行加工处理的技术。Spark并不支持将数据持久化至内存中,我们通常所说的是spark的数据缓存技术,如将RDD数据缓存至内存,但并没有实现持久化。缓存数据是可以擦除的,擦除后同样是需要我们重新计算的。Spark的数据处理是在内存中进行的,这话并没有错,其实当前的所有操作系统的数据处理都是在内存中进行的。所以,这内存计算并不是Spark的特性。
Spark是允许我们利用缓存技术和LRU算法缓存数据的。Spark的所有运算并不是全部都在内存中,当shuffle发生的时候,数据同样是需要写入磁盘的。所以,Spark并不是基于内存的技术,而是使用了缓存机制的技术。
Spark是允许我们利用缓存技术和LRU算法缓存数据的。Spark的所有运算并不是全部都在内存中,当shuffle发生的时候,数据同样是需要写入磁盘的。所以,Spark并不是基于内存的技术,而是使用了缓存机制的技术。

Spark主要快在哪里呢?

Spark最引以为豪的就是官网介绍的经典案例。这个案例是逻辑回归机器学习算法,该算法主要特征是对同一份数据的反复迭代运算。Spark是内存缓存,所以数据只加载一次,Hadoop则需要反复加载。实际情况下,Spark通常比Hadoop快十倍以内是合理的。主要快在哪里呢?
其实,关键还是在于Spark 本身快。
Spark比Hadoop快的主要原因有:
1.消除了冗余的HDFS读写
Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,
很多的shufle操作,那么Hadoop的读写IO时间会大大增加。
2.消除了冗余的MapReduce阶段
Hadoop的shuffle操作一定连着完整的MapReduce操作,冗余繁琐。而Spark基于RDD提供了丰富的算子操作,且reduce操作产生shuffle
数据,可以缓存在内存中。
3.JVM的优化
Spark Task的启动时间快。Spark采用fork线程的方式,Hadoop每次MapReduce操作是基于线程的,只在启动。而Hadoop采用创建新的进程的方式,启动一个Task便会启动一次JVM。
Spark的Executor是启动一次JVM,内存的Task操作是在线程池内线程复用的。
每次启动JVM的时间可能就需要几秒甚至十几秒,那么当Task多了,这个时间Hadoop不知道比Spark慢了多少。
考虑一种极端查询:

Select month_id,sum(sales) from T group by month_id;

这个查询只有一次shuffle操作,此时,也许Hive HQL的运行时间也许比Spark还快。

结论

Spark快不是绝对的,但是绝大多数,Spark都比Hadoop计算要快。这主要得益于其对mapreduce操作的优化以及对JVM使用的优化。
所以,整体而言,Spark比Hadoop的MR程序性能要高,正常在三到四倍左右,而并不是官网所说的高几百倍。

参考文献:
https://blog.csdn.net/Stefan_xiepj/article/details/80347720
https://www.jianshu.com/p/6ca1421b3c47

最后

以上就是跳跃云朵为你收集整理的面试必备——Spark为什么比Hadoop快的全部内容,希望文章能够帮你解决面试必备——Spark为什么比Hadoop快所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部