概述
Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。
[color=red][b]其实,关键还是在于Spark 本身快。[/b][/color]
[color=red][size=large][b]Spark为什么快?[/b][/size][/color]
[b]1、消除了冗余的HDFS读写[/b]
Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。
[b]2、消除了冗余的MapReduce阶段[/b]
Hadoop的shuffle操作一定连着完整的MapReduce操作,冗余繁琐。而Spark基于RDD提供了丰富的子操作,且reduce操作产生shuffle数据,可以缓存在内存中。
[b]3、JVM的优化[/b]
Hadoop每次MapReduce操作,启动一个Task便会启动一次JVM,基于进程的操作。[color=blue][b]而Spark每次MapReduce操作是基于线程的[/b][/color],只在启动Executor是启动一次JVM,[b]内存的Task操作是在线程复用的。[/b]
[color=red][b]* task启动时间比较快,Spark是fork出线程;而MR是启动一个新的进程;[/b][/color]
[b]* 更快的shuffles,Spark只有在shuffle的时候才会将数据放在磁盘,而MR却不是。[/b]
* 更快的工作流:典型的MR工作流是由很多MR作业组成的,他们之间的数据交互需要把数据持久化到磁盘才可以;而Spark支持DAG以及pipelining,在没有遇到shuffle完全可以不把数据缓存到磁盘。
* 缓存:虽然目前HDFS也支持缓存,但是一般来说,Spark的缓存功能更加高效,特别是在SparkSQL中,我们可以将数据以列式的形式储存在内存中。
结论:Spark快不是绝对的,但是绝大多数,Spark都比Hadoop计算要快。这主要得益于其对mapreduce操作的优化以及对JVM使用的优化。
最后
以上就是踏实银耳汤为你收集整理的Spark 为什么比Hadoop快的全部内容,希望文章能够帮你解决Spark 为什么比Hadoop快所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复