看起来有两种方法可以使用spark作为hive的后端引擎。
第一种是直接使用 spark
作为引擎。就像这个教程。
另一种方法是使用 spark
作为的后端引擎 MapReduce
. 就像这个教程。
在第一个教程中 hive.execution.engine
是 spark
. 我看不见 hdfs
卷入的。
在第二个教程中 hive.execution.engine
仍然是 mr
,但因为没有 hadoop
进程,它看起来像 mr
是Spark。
老实说,我有点困惑。我想第一个建议是 mr
已被弃用。但是那辆车在哪里 hdfs
卷入的?
2条答案
按热度按时间neskvpey1#
apachespark构建dag(有向无环图),而mapreduce使用本地map和reduce。在spark中执行时,逻辑依赖形成物理依赖。
什么是达格?
dag是在执行之前建立逻辑依赖关系(把它想象成一个可视化的图形)当我们有多个map,reduce或一个reduce的输出是另一个map的输入,那么dag将有助于加快作业的速度。
dag是在tez(照片右侧)中构建的,而不是在mapreduce(左侧)中。
注意:apachespark在dag上工作,但是有stage代替map/reduce。tez有dag和Map/减少工作。为了使它更简单,我使用了map/reducecontext,但是记住apachespark有stage。但dag的概念仍然是一样的。
原因2:Map将其输出持久化到磁盘(缓冲区也被填满了,但当90%的缓冲区被填满时,输出就进入磁盘)从那里数据被合并。但是在apachespark中,中间数据被持久化到内存中,这使得它的速度更快。有关详细信息,请查看此链接
3hvapo4f2#
我有不同的理解。
通常,hive使用mr作为执行引擎,除非您使用impala,但不是所有发行版都有这个。
但在一段时间内,spark可以作为spark的执行引擎。
https://blog.cloudera.com/blog/2014/07/apache-hive-on-apache-spark-motivations-and-design-principles/ 更详细地讨论了这一点。