繁体   English   中英

关于Hive中的引擎,Map Reduce和Spark之间有什么区别?

[英]What is the difference between Map Reduce and Spark about engine in Hive?

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

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

另一种方法是使用spark作为MapReduce的后端引擎。 喜欢本教程

在第一个教程中, hive.execution.enginespark 而且我看不到涉及的hdfs

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

老实说,我对此有些困惑。 我想推荐第一个,因为mr已被弃用。 但是hdfs涉及哪里?

我有不同的理解。

通常,除非您使用IMPALA,否则Hive将MR用作执行引擎,但并非所有发行版都具有此功能。

但是一段时间以来,Spark可以用作Spark的执行引擎。

https://blog.cloudera.com/blog/2014/07/apache-hive-on-apache-spark-motivations-and-design-principles/对此进行了更详细的讨论。

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中,中间数据会保留在内存中,从而使其速度更快。 检查此链接以获取详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM