`
gaozzsoft
  • 浏览: 424885 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Hive引擎对比-MR、Tez、Spark

 
阅读更多

Hive引擎简介

 

Hive引擎包括:默认MR、Tez、Spark

 

不更换引擎hive默认的是MR。

 

Hive on Spark:Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。

 

Spark on Hive : Hive只作为存储元数据,Spark负责SQL解析优化,语法是Spark SQL语法,Spark负责采用RDD执行。

 

MapReduce

 

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。

 

Tez

 

Tez是Apache开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业

 

Spark

 

Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

 

Tez和Mapreduce区别

 

核心思想:MapReduce将一个算法抽象成Map和Reduce两个阶段进行处理;Tez将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等依赖DAG:Mapreduce没有DAG一说,Tez将map和reduce阶段拆分成多个阶段,分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业落地磁盘:MapReduce会有多次落地磁盘;Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少。

 

Tez和Spark区别

 

使用场景:spark更像是一个通用的计算引擎,提供内存计算,实时流处理,机器学习等多种计算方式,适合迭代计算;tez作为一个框架工具,特定为hive和pig提供批量计算运行模式:spark属于内存计算,支持多种运行模式,可以跑在standalone,yarn上;而tez只能跑在yarn上;虽然spark与yarn兼容,但是spark不适合和其他yarn应用跑在一起资源利用:tez能够及时的释放资源,重用container,节省调度时间,对内存的资源要求率不高; 而spark如果存在迭代计算时,container一直占用资源;

 

mr引擎在hive 2中将被弃用。官方推荐使用tez或spark等引擎。

 

选择

 

tez:使用有向无环图。内存式计算。

spark:可以同时作为批式和流式的处理引擎,减少学习成本。

-----------------------------------------------------------

Hive on Spark配置

 

在Hive所在节点部署Spark

在hive中创建spark配置文件

vim /opt/module/hive/conf/spark-defaults.conf

 

向HDFS上传Spark纯净版jar包

vim /opt/module/hive/conf/hive-site.xml

添加如下内容

<!--Spark依赖位置(注意:端口号8020必须和namenode的端口号一致)-->

<property>

    <name>spark.yarn.jars</name>

    <value>hdfs://hadoop102:8020/spark-jars/*</value>

</property>

  <!--Hive执行引擎-->

<property>

    <name>hive.execution.engine</name>

    <value>spark</value>

</property>

 

-----------------------------------------------------

 

tez:

在hive sql中使用了union 或 join操作

tez会将任务切分,每个小任务,同一个HDFS分区目录下会创建一个文件文件夹,这就会造成一个非常严重的问题,假如这张表的下文,使用这张表没有用tez,而是使用spark或者mr,这两种引擎是不会遍历子文件夹下的内容的。查出来的数据为0。而我们很难约束,其他人使用同一种引擎,

所以tez在使用中抛弃。我们最中选择了spark引擎。

 

-----------------------------------------

 

MapReduce: 是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行处理,每个阶段都是用键值对(key/value)作为输入和输出,非常适合数据密集型计算。Map/Reduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性地返回它所完成的工作和最新的状态。如果一个节点在设定的时间内没有进行心跳上报,主节点(可以理解为主服务器)就会认为这个节点down掉了,此时就会把分配给这个节点的数据发到别的节点上运算,这样可以保证系统的高可用性和稳定性。因此它是一个很好的计算框架。

TEZ:是基于Hadoop YARN之上的DAG(有向无环图,Directed Acyclic Graph)计算框架。核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等。这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业,从而可以减少Map/Reduce之间的文件存储,同时合理组合其子过程,也可以减少任务的运行时间。

Spark:Hive on Spark总体的设计思路是,尽可能重用Hive逻辑层面的功能;从生成物理计划开始,提供一整套针对Spark的实现,比如 SparkCompiler、SparkTask等,这样Hive的查询就可以作为Spark的任务来执行了

 

三者比较个人意见:

MR

计算,会对磁盘进行多次的读写操作,这样启动多轮job的代价略有些大,不仅占用资源,更耗费大量的时间 

TEZ

计算,就会生成一个简洁的DAG作业,算子跑完不退出,下轮继续使用上一轮的算子,这样大大减少磁盘IO操作,从而计算速度更快。 TEZ比MR至少快5倍(约值,反正是快,不必较真0.0) 

Spark

计算,DAG生成,Stage划分,比MR快10倍(约值,反正是快,不必较真0.0)与TEZ相比我选择Spark,一来快,二来奇葩问题比较少

 

三种引擎如何切换引擎?

 

1)、配置mapreduce计算引擎

 

set hive.execution.engine=mr;

 

2)、配置tez计算引擎

 

set hive.execution.engine=tez;

 

3)、配置spark计算引擎

 

set hive.execution.engine=spark;

 

hive on spark配置集群模式

 

set hive.execution.engine=spark;

set spark.master=yarn-cluster;

set mapreduce.job.queuename=xxx;

 

 

分享到:
评论

相关推荐

    apache-hive-1.2.1-bin.tar.gz.zip

    为了改善这种情况,后来的 Hive 版本引入了 Tez 和 Spark 作为执行引擎,以提高查询性能。 总之,Apache Hive 是一个强大的大数据分析工具,它通过提供 SQL 风格的语言简化了大数据处理,使得非编程背景的用户也能...

    spark或mr引擎插入的数据,hive表查询数据为0

    1. **源头上更换引擎**:最简单直接的方式是不在数据源端使用Tez引擎,而是选择使用Hive或Spark-SQL直接进行数据写入。这种方式避免了额外子目录的生成,从而消除了后续查询中的潜在问题。 2. **使用Tez引擎并进行二...

    Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析_xiaohu21的博客-CSDN博客.mht

    Hive错误之 Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误分析_xiaohu21的博客-CSDN博客.mht

    bigdata:Apache Hive,Spark相关

    Hive on Mr-Apache Ignite缓存 通过LLAP缓存(TODO)在MR上进行配置 在Tez上蜂巢 通过LLAP缓存(TODO)在Tez上进行配置 Spark SQL-具有HDFS的Spark独立集群 依存关系: 阿帕奇蜂巢 元商店: 蜂巢-&gt; /data/...

    Hive on Spark安装配置详解.pdf

    为了解决这一问题,Hive引入了Tez和Spark作为替代的执行引擎,其中Hive on Spark因其内存计算的优势,显著提升了处理速度。 在本文中,我们将详细介绍如何在已有的Hadoop集群上安装配置Hive on Spark。首先,确保你...

    华为大数据认证: Hive分布式数据仓库.pptx

    Hive与传统数据仓库相比,具有存储HDFS、理论上有无限拓展的可能、执行引擎有MR/Tez/Spark多种引擎可供选择、使用方式使用HQL(类似SQL)、灵活性元数据存储独立于数据存储之外等特点。 Hive的优点包括:HiveServer...

    大数据技术之Hive.zip

    为了提升性能,Hive提供了多种优化策略,如Joins的优化、Bucketing和Sorting、Tez或Spark作为执行引擎替代MapReduce,以及使用Hive的Explain命令来分析查询计划。 **7. 分布式缓存** Hive支持Hadoop的分布式缓存...

    Hive 优化以及执行原理

    5. **执行引擎**:Hive可以使用多种执行引擎,如Tez和Spark,它们能提供比原生MapReduce更高的性能。 6. **元数据管理**:Hive元数据存储在MySQL或Derby等数据库中,包含了表结构、分区信息等,对查询至关重要。 ...

    HiveSQL使用考核题.zip

    - **与Tez和Spark的交互**:更高效的执行引擎,提供更快的查询速度。 通过这个"HiveSQL使用考核题"的学习和练习,你可以加深对HiveSQL的理解,掌握如何有效地使用Hive进行大数据查询和分析,同时提升你在大数据...

    Hive编程指南.pdf

    - **使用Tez或Spark作为执行引擎**:相比MapReduce,Tez和Spark提供了更高的并行度和更低的延迟。 5. **Hive与其它大数据组件的集成** - **Hive与Pig**:两者都可以在Hadoop上进行数据处理,Pig提供更灵活的脚本...

    Hive查询优化整理与Hive简易版思维导图

    对于大数据JOIN,考虑使用Spark SQL或Tez引擎。 4. **GROUP BY与ORDER BY的使用**:GROUP BY后跟ORDER BY会导致额外的排序,可能增加计算成本。若无特别需求,可尽量避免。 5. **使用子查询替换自连接**:某些情况...

    Hive常见问题维护手册V1.01

    3. **Hive Compiler**:将 HQL 转换为 MapReduce 任务或者 Tez、Spark 任务。 4. **Hive Execution Engine**:执行由 Compiler 生成的计划,利用 Hadoop 的分布式计算框架执行任务。 5. **Hive Client**:用户接口,...

    hive常用优化方法大全共2页.pdf.zip

    8. **选择合适的执行引擎**:Tez和Spark相比MapReduce提供了更高的并行度和性能。对于实时分析和交互式查询,考虑使用Impala或Hawq。 9. **避免使用SELECT ***:明确指定需要的列可以减少数据处理和网络传输量,...

    企业数据治理之数据算力治理方案.pptx

    新增任务无“查重”检测机制,平台存在冗余或相似任务,存在没人使用(无价值)的任务,长期空跑,平台缺乏任务治理产品,数据倾斜等慢任务,缺乏诊断工具和优化工具,计算引擎以MR/Tez为主,Spark引擎使用占比不足5...

    2021最新最全大数据面试宝典-有答案

    Hive优化:优化Hive作业可以通过多种方式,包括调整MapReduce参数、分区、小文件合并、使用Tez或Spark执行引擎等。 Spark相关知识点 Spark与MapReduce相比效率更高:Spark的效率高于MapReduce,原因在于它使用了...

    2013中国大数据技术大会PPT——Big Data in Cloud

    其次,MapReduce(MR)在大数据处理中的局限性促使新的处理框架的出现,比如Tez和Spark。Tez是基于Hadoop YARN构建的,它对MR进行了优化,允许开发者构建更复杂的有向无环图(DAG),提高了处理效率。Spark是一个...

    藏经阁-How to overcome mysterious problems caused by large and mult

    我们的生产集群由200多个slave节点组成,具有8PB的HDFS容量,每天执行30,000到50,000个作业,我们的用户账户有40多个,使用了多种类型的作业,例如MR、Hive、Tez、Spark、Pig、Sqoop、HBase、Slider等。 三、问题...

    Hadoop实战手册—实验需要的材料

    8. **Chap 8:Hadoop并行计算框架** - 可能会涵盖Spark、Tez等更高效的并行计算框架,它们在处理实时和交互式查询时表现出优越的性能。 9. **Chap 9:Hadoop数据存储与管理** - 这一章可能涉及到Hadoop与其他数据...

Global site tag (gtag.js) - Google Analytics