似乎有两种方法可以将spark用作Hive的后端引擎。
第一个是直接使用spark
作为引擎。像这样tutorial。
另一种方法是将spark
用作MapReduce
的后端引擎。像这样tutorial。
在第一个教程中,hive.execution.engine
是spark
。而且我看不到hdfs
参与其中。
在第二个教程中,hive.execution.engine
仍然是mr
,但是由于没有hadoop
进程,因此看来mr
的后端是火花。
老实说,我对此有些困惑。我猜推荐使用第一个,因为mr
已过时。但是hdfs
涉及什么地方?
答案 0 :(得分:1)
我的理解不同。
通常,Hive使用MR作为执行引擎,除非您使用IMPALA,但并非所有发行版都具有此功能。
但是一段时间以来,Spark可以用作Spark的执行引擎。
答案 1 :(得分:1)
Apache Spark构建DAG(有向无环图),而Mapreduce与本机Map和Reduce一起使用。在Spark中执行时,逻辑依赖性形成物理依赖性。
现在什么是 DAG ?
DAG正在执行之前建立逻辑依赖关系(将其视为可视图形) 当我们有多个贴图并且reduce或一个reduce的输出是另一张贴图的输入时,DAG将帮助加速工作。 DAG是在Tez(照片的右侧)中构建的,而不是在MapReduce(左侧)中构建的。
注意: Apache Spark可在DAG上运行,但具有代替Map / Reduce的阶段。 Tez有DAG,可以在Map / Reduce上工作。为了简化起见,我使用了Map / Reduce上下文,但请记住Apache Spark有阶段。但是DAG的概念保持不变。
原因2: Map会将其输出持久保存到磁盘。(也有缓冲区,但是当90%的缓冲区被填充时,输出将进入磁盘)从那里合并数据。 但是在Apache Spark中,中间数据会保留在内存中,从而使其速度更快。 Check this link for details