首页 > 解决方案 > 关于 Hive 中的引擎,Map Reduce 和 Spark 有什么区别?

问题描述

看起来有两种方法可以使用 spark 作为 Hive 的后端引擎。

第一个是直接spark用作引擎。喜欢这个教程

另一种方法是spark用作MapReduce. 喜欢这个教程

在第一个教程中,hive.execution.enginespark. 我看不到hdfs参与。

在第二个教程中,hive.execution.engine仍然是mr,但是由于没有hadoop进程,所以看起来后端mr是 spark。

老实说,我对此有点困惑。我想第一个建议mr已被弃用。但hdfs涉及的对象在哪里?

标签: apache-sparkhadoophive

解决方案


Apache Spark 构建 DAG(有向无环图),而 Mapreduce 使用原生 Map 和 Reduce。在 Spark 中执行时,逻辑依赖关系形成物理依赖关系。

现在什么是DAG

DAG 在执行之前构建逻辑依赖关系。(将其视为可视图)当我们有多个 map 和 reduce 或一个 reduce 的输出是另一个 map 的输入时,DAG 将有助于加快作业速度。 在此处输入图像描述 DAG 是在 Tez 中构建的(照片右侧),但不是在 MapReduce 中(左侧)。

注意: Apache Spark 在 DAG 上工作,但有阶段代替 Map/Reduce。Tez 有 DAG 并在 Map/Reduce 上工作。为了使其更简单,我使用了 Map/Reduce 上下文,但请记住 Apache Spark 有阶段。但 DAG 的概念保持不变。

原因 2: Map 将其输出保存到磁盘。(也有缓冲区,但当 90% 被填充时,输出进入磁盘)从那里数据进入合并。但是在 Apache Spark 中,中间数据是持久化到内存中的,这使得它更快。 检查此链接以获取详细信息


推荐阅读