大数据的离线数据分析项目中,hive如何集入tez运行引擎

Hive中Tez的下载、配置与上传
本文主要介绍了在Hive中使用Tez的相关操作。包括下载和安装tez,如下载依赖包、拷贝、解压缩和修改名称;在Hive中配置Tez,添加环境变量和更改计算引擎;进行Tez自身的配置;最后将Tez上传到集群的HDFS路径。

1、下载和安装tez
1)下载tez的依赖包,下载地址为:http://tez.apache.org
2)拷贝apache-tez-0.9.1-bin.tar.gz到anry2(anry2是我的主机名)的/anry/module目录下
[XXX@anry2 module]$ ls
apache-tez-0.9.1-bin.tar.gz
3)解压缩apache-tez-0.9.1-bin.tar.gz
[XXX@anry2 module]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz
4)修改名称
[XXX@anry2 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1

2、 在Hive中配置Tez
1)进入到Hive的配置目录:/anry/module/hive/conf
[xxx@anry2 conf]$ pwd
/anry/module/hive/conf
2)在hive-env.sh文件中添加tez环境变量配置和依赖包环境变量配置
[xxx@anry2 conf]$ vim hive-env.sh
添加如下配置
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/anry/module/hadoop-2.7.2

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/anry/module/hive/conf

# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export TEZ_HOME=/anry/module/tez-0.9.1    *#是你的tez的解压目录*
export TEZ_JARS=""
for jar in `ls $TEZ_HOME |grep jar`; do
    export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
    export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done

export HIVE_AUX_JARS_PATH=/anry/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS

3)在hive-site.xml文件中添加如下配置,更改hive计算引擎

<property>
    <name>hive.execution.engine</name>
    <value>tez</value>
</property>

3、 Tez自身的配置
1)在Hive的/opt/module/hive/conf下面创建一个tez-site.xml文件
[xxx@anry2 conf]$ pwd
/anry/module/hive/conf

[xxx@anry2 conf]$ vim tez-site.xml
添加如下内容

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
	<name>tez.lib.uris</name>    
	<value>${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/tez-0.9.1/lib</value>
</property>
<property>
	<name>tez.lib.uris.classpath</name>    	
	<value>${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/tez-0.9.1/lib</value>
</property>
<property>
     <name>tez.use.cluster.hadoop-libs</name>
     <value>true</value>
</property>	
<property>
     <name>tez.history.logging.service.class</name>   
     <value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>     		  		     
</property>
</configuration>

4、 上传Tez到集群中
1)将/anry/module/tez-0.9.1上传到HDFS的/tez路径
[xxx@anry2 conf]$ hadoop fs -mkdir /tez
[xxx@anry2 conf]$ hadoop fs -put /opt/module/tez-0.9.1/ /tez
[xxx@anry2 conf]$ hadoop fs -ls /tez
/tez/tez-0.9.1

<think>嗯,用户想比较Hive和Spark在Hadoop生态中进行大数据离线和实时分析的优劣。我需要先理清楚这两个工具各自的特点和适用场景。首先,Hive是基于Hadoop的数据仓库工具,使用HQL进行查询,底层转换成MapReduce任务。而Spark是一个内存计算框架,支持更多实时处理,比如Spark Streaming。 接下来,用户可能需要知道两者的架构差异。Hive依赖MapReduce,所以延迟高,适合离线批处理。而Spark使用RDD和内存计算,速度更快,适合需要低延迟的场景。不过Hive在稳定性方面可能更好,毕竟处理超大规模数据时,MapReduce更可靠。 然后要考虑数据处理能力。Hive适合结构化的数据,尤其是ETL任务。而Spark支持结构化、半结构化和非结构化数据,MLlib和GraphX也扩展了其应用范围。用户可能也关心实时处理,Hive本身不支持实时,但可以结合其他工具,而Spark Streaming和Structured Streaming能处理准实时数据。 资源管理方面,Hive依赖于YARN,适合静态资源分配,而Spark的动态资源管理可能更高效,特别是在迭代式任务中,比如机器学习和图计算。不过,内存消耗方面Spark可能更高,需要权衡资源。 还有易用性和生态系统。Hive的HQL对于熟悉SQL的用户来说更友好,而Spark提供多语言API,适合开发者。生态方面,HiveHive LLAP优化,而Spark整合了流处理、机器学习等库。 最后,用户可能想知道实际应用中的选择建议。比如,离线分析用Hive,实时或需要复杂计算的用Spark。但如果有历史Hive系统,可以结合Spark来优化部分模块。需要确保引用相关参考资料,比如引用[2]提到LinkedIn用Hadoop处理增量工作流,可能涉及Hive的批处理。引用[3]提到Spark的MLlib,说明其在分析上的优势。引用[4]提到SparkR的性能问题,可能影响实时处理,需要注意优化。</think>### Hive vs Spark 在Hadoop生态中的离线与实时分析对比 #### 一、架构设计对比 1. **Hive** - 基于MapReduce框架,采用**批处理模型**,数据存储在HDFS/Hive表中 - 通过**HQL查询语句**转换为MapReduce任务,适合处理结构化数据 - 延迟通常在分钟到小时级别,例如: ```sql SELECT COUNT(*) FROM logs WHERE date = '2023-10-01'; -- 触发MapReduce作业[^2] ``` 2. **Spark** - 基于**内存计算引擎**,支持RDD/DataFrame抽象模型 - 采用**DAG执行引擎**,支持批处理、流处理、机器学习和图计算 - 典型延迟可达到秒级,例如流处理代码: ```python spark.readStream.format("kafka").start().writeStream.format("console").start() # 微批处理模式 ``` #### 二、性能关键指标对比 | 维度 | Hive (Tez引擎) | Spark 3.0 | |-----------|---------------------|--------------------| | 任务启动延迟 | 30-60秒 | 2-5秒 | | 内存利用率 | 静态分配 | 动态抢占式分配[^1] | | 数据吞吐量 | 50-100MB/s | 500MB-1GB/s | | 容错机制 | 磁盘级检查点 | 内存级Lineage恢复 | #### 三、典型应用场景 1. **Hive优势场景** - 超大规模历史数据ETL(如PB级日志清洗) - 需要严格ACID特性的数仓查询(通过Hive 3.x事务表实现) - 与Hadoop生态工具深度成(如HBase、Sqoop)[^3] 2. **Spark优势场景** - 迭代式计算(如PageRank算法): $$ \mathbf{rank}(v) = \frac{0.15}{N} + 0.85 \sum_{u \in M(v)} \frac{\mathbf{rank}(u)}{L(u)} $$ - 实时数据管道(如Kafka→Spark Streaming→HBase) - 机器学习流水线(MLlib库支持梯度下降等算法) #### 四、混合部署实践 1. **Lambda架构示例** ```mermaid graph LR A[Kafka] --> B{实时层: Spark Streaming} A --> C{批处理层: Hive} B --> D[Speed Table] C --> E[Batch View] D & E --> F[Query Service] ``` 2. **资源调度优化** - 使用YARN的**节点标签功能**划分Hive/Spark专属计算池 - 通过Hive LLAP(Live Long and Process)实现亚秒级响应查询 #### 五、演进趋势 1. **Hive的实时化** - Hive-on-Spark支持(替代MapReduce引擎) - LLAP守护进程实现**交互式查询** ```sql SET hive.execution.engine=spark; -- 切换Spark执行引擎 ``` 2. **Spark的SQL增强** - 通过Catalyst优化器实现CBO(Cost-Based Optimization) - Hive Metastore直接访问Hive表 ```scala spark.sql("CREATE TABLE spark_hive_table USING hive LOCATION '/user/hive/warehouse'") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值