Hive3.1.2 on Tez0.10.1的安装部署

本文详细介绍了如何在Linux环境下搭建Hive,包括Hive的安装、配置元数据到MySQL,以及解决日志Jar包冲突。接着,重点讲述了如何配置和测试Hive使用Tez作为执行引擎,包括下载Tez、配置Hadoop和Hive环境、解决日志冲突等步骤,并提供了遇到问题的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Hive环境搭建

  1. Hive安装部署
1)把apache-hive-3.1.2-bin.tar.gz上传到linux的/opt/software目录下
2)解压apache-hive-3.1.2-bin.tar.gz到/opt/module/目录下面
[yili@hadoop102 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
3)修改apache-hive-3.1.2-bin.tar.gz的名称为hive
[yili@hadoop102 software]$ mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/
4)修改/etc/profile.d/my_env.sh,添加环境变量
[yili@hadoop102 software]$ sudo vim /etc/profile.d/my_env.sh
添加内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin
重启Xshell对话框或者source一下 /etc/profile.d/my_env.sh文件,使环境变量生效
[yili@hadoop102 software]$ source /etc/profile.d/my_env.sh
5)解决日志Jar包冲突,进入/opt/module/hive-3.1.2/lib目录
[yili@hadoop102 lib]$ mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak
  1. Hive元数据配置到MySQL
    (1)拷贝驱动
将MySQL的JDBC驱动拷贝到Hive的lib目录下
[yili@hadoop102 lib]$ cp /opt/software/mysql-connector-java-bin-5.1.27.jar /opt/module/hive-3.1.2/lib/

(2)配置MySQL作为元数据存储

$HIVE_HOME/conf目录下新建hive-site.xml文件
[atguigu@hadoop102 conf]$ vim hive-site.xml
添加如下内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>

    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

    <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    </property>

    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop102</value>
    </property>

    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>

    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
</configuration>
  1. 启动Hive
    (1)初始化元数据库

1)登录MySQL

[yili@hadoop102 conf]$ mysql -uroot -p123456

2)新建Hive元数据库

mysql> create database metastore;
mysql> quit;

3)初始化Hive元数据库

[yili@hadoop102 conf]$ schematool -initSchema -dbType mysql -verbose

(2)启动hive客户端
1)启动Hive客户端

[yili@hadoop102 hive]$ bin/hive

2)查看数据库

hive (default)> show databases;
OK
database_name
default
  1. Hive引擎介绍
    Hive引擎包括:默认MR、tez、spark
  2. Hive on Tez配置
    (1)在Hive所在节点部署Tez
    1)tez下载地址:
    链接:https://pan.baidu.com/s/1HgyIgO3GgNtqQaF8EYD4oQ
    提取码:yyds
    2)将tez安装包拷贝到集群,并解压tar包,注意解压的是minimal
 mkdir /opt/module/tez
 tar -zxvf /opt/software/tez-0.10.1-SNAPSHOT-minimal.tar.gz -C /opt/module/tez

3)上传tez依赖到HDFS(上传的是不带minimal的那个)

hadoop fs -mkdir /tez(集群创建/tez路径,然后再上传,注意路径)
hadoop fs -put /opt/software/tez-0.10.1-SNAPSHOT.tar.gz /tez

4)新建tez-site.xml在$HADOOP_HOME/etc/hadoop/路径下(注意,不要放在hive/conf/目录下,不生效),记得把tez-site.xml同步到集群其他机器。

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 注意你的路径以及文件名是否和我的一样 -->
<property>
        <name>tez.lib.uris</name>
    <value>${fs.defaultFS}/tez/tez-0.10.1-SNAPSHOT.tar.gz</value>
</property>
<property>
     <name>tez.use.cluster.hadoop-libs</name>
     <value>true</value>
</property>
<property>
     <name>tez.am.resource.memory.mb</name>
     <value>1024</value>
</property>
<property>
     <name>tez.am.resource.cpu.vcores</name>
     <value>1</value>
</property>
<property>
     <name>tez.container.max.java.heap.fraction</name>
     <value>0.4</value>
</property>
<property>
     <name>tez.task.resource.memory.mb</name>
     <value>1024</value>
</property>
<property>
     <name>tez.task.resource.cpu.vcores</name>
     <value>1</value>
</property>
</configuration>

4)修改Hadoop环境变量,添加以下内容

cd /opt/module/hadoop-3.1.3/etc/hadoop/shellprofile.d
vi example.sh
hadoop_add_profile tez
function _tez_hadoop_classpath
{
    hadoop_add_classpath "$HADOOP_HOME/etc/hadoop" after
    hadoop_add_classpath "/opt/module/tez/*" after
    hadoop_add_classpath "/opt/module/tez/lib/*" after
}

5)修改hive的计算引擎,vim $HIVE_HOME/conf/hive-site.xml,添加以下内容

<property>
    <name>hive.execution.engine</name>
    <value>tez</value>
</property>
<property>
    <name>hive.tez.container.size</name>
    <value>1024</value>
</property>

6)在hive-env.sh中添加tez的路径

export TEZ_HOME=/opt/module/tez    #是你的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=/opt/module/hadoop-3.1.3/share/hadoop/common/hadoop-lzo-0.4.21-SNAPSHOT.jar$TEZ_JARS

7)解决日志Jar包冲突

rm /opt/module/tez/lib/slf4j-log4j12-1.7.10.jar
  1. Hive on Tez测试
1)启动Hive
[yili@hadoop102 hive]$ hive
2)创建表
hive (default)> create table student(
id int,
name string);
3)向表中插入数据
hive> insert into table student values(3,'guodong');
4)如果没有报错就表示成功了
Query ID = yili_20220721144352_ebaa6f16-71e2-4bd5-bfcf-b611af819ebb
Total jobs = 1
Launching Job 1 out of 1
Tez session was closed. Reopening...
Session re-established.
Session re-established.
Status: Running (Executing on YARN cluster with App id application_1658371098258_0011)

----------------------------------------------------------------------------------------------
        VERTICES      MODE        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED  
----------------------------------------------------------------------------------------------
Map 1 .......... container     SUCCEEDED      1          1        0        0       0       0  
Reducer 2 ...... container     SUCCEEDED      1          1        0        0       0       0  
----------------------------------------------------------------------------------------------
VERTICES: 02/02  [==========================>>] 100%  ELAPSED TIME: 17.20 s    
----------------------------------------------------------------------------------------------
Loading data to table default.student
OK
Time taken: 31.1 seconds
hive> select * from student;
OK
1       zhangsan
2       linxin
3       guodong

但是现实却往往并没有这么顺利,再执行hive命令以及插入数据都分别报了一个错误,请看如下两个错误;
error1:
在这里插入图片描述
错误描述:报错的大概内容就是加载hive的过程中,缺少相关依赖:
解决办法:下载相关依赖commons-collections4-4.1.jar,然后放置到$HIVE_HOME/lib目录下
error2:
在这里插入图片描述
错误描述:当向hive库插入数据时候会报上述错误
解决办法:
向表中 执行一次load 函数从本机加载数据到表中,下次就不会报这个错误了。

<think>好的,我现在需要帮助用户解决在Tez安装Hive 4.0.1的问题。首先,我得回顾一下用户提供的引用内容,看看有没有相关的配置步骤或者常见问题。根据引用[1],用户提到了Hive 4.0.1安装步骤,包括修改hive-site.xml文件。引用[2]中则提到了如何将Hive的计算引擎切换为Tez,需要添加相应的配置项。引用[3]和[4]涉及到了编译和依赖的问题,特别是Hive 4.0Tez的兼容性问题。 接下来,我需要整理安装Tez引擎的基本步骤。首先,确保Tez已经正确安装配置好环境变量,比如TEZ_HOME。然后,在Hive配置文件中添加Tez相关的属性,如hive.execution.engine设置为tez。同时,需要将Tez的jar包添加到Hive的类路径中,可能涉及到修改hive-env.sh文件。 另外,用户提到Hive 4.0.1Tez的版本兼容性可能存在问题。根据引用[4],Hive 4.0 alpha-2整合Tez 0.10.2时遇到了HiveServer2启动失败的情况,可能需要调整依赖项,比如Hadoop和htrace-core4的版本。这里需要确认用户使用的Tez版本是否与Hive 4.0.1兼容,可能需要升级Tez到更新的版本,或者调整Hive的依赖。 然后,用户可能遇到的常见问题包括类路径错误、依赖冲突、配置文件错误等。例如,在引用[3]中,编译时出现了类找不到的情况,可能需要修改源码或排除冲突的依赖。因此,在安装过程中,需要仔细检查日志文件,确认是否有类似的类找不到或版本不匹配的错误。 最后,生成相关问题时,应该围绕安装步骤、配置方法、依赖管理、故障排除等方面,帮助用户全面了解可能遇到的挑战和解决方案。</think>### Hive 4.0.1 配置 Tez 引擎指南 #### 一、环境准备 1. **依赖版本匹配** - Hive 4.0.1 需要与 Tez 0.10.x 或更高版本兼容,推荐使用 Tez 0.10.2 及以上[^4] - Hadoop 版本需为 3.x 系列(如 3.3.1),并确保环境变量 `HADOOP_HOME` 已配置 - 验证 Maven 仓库中依赖项是否完整,如 `hadoop-common` 和 `htrace-core4` 的版本需对齐[^4] 2. **安装 Tez** 下载 Tez 二进制包并解压,配置环境变量: ```bash export TEZ_HOME=/path/to/tez-0.10.2 export TEZ_CONF_DIR=$TEZ_HOME/conf export HADOOP_CLASSPATH=$TEZ_HOME/*:$TEZ_HOME/lib/*:$HADOOP_CLASSPATH ``` #### 二、Hive 配置修改 1. **修改 `hive-site.xml`** 进入 Hive 配置目录 `/apache-hive-4.0.1-bin/conf`,复制模板文件并添加 Tez 引擎配置: ```xml <!-- 设置执行引擎Tez --> <property> <name>hive.execution.engine</name> <value>tez</value> </property> <!-- 指定 Tez 依赖包路径 --> <property> <name>tez.lib.uris</name> <value>${fs.defaultFS}/tez/tez-0.10.2.tar.gz</value> </property> ``` 引用配置模板需确保路径与实际存储位置一致[^1][^2]。 2. **配置 `hive-env.sh`** 添加 Tez 的类路径: ```bash export HIVE_AUX_JARS_PATH=$TEZ_HOME/*:$TEZ_HOME/lib/* ``` #### 三、解决兼容性问题 1. **依赖冲突处理** - 若出现 `htrace-core4` 依赖错误,需显式声明版本: ```xml <dependency> <groupId>org.apache.htrace</groupId> <artifactId>htrace-core4</artifactId> <version>4.0.1-incubating</version> </dependency> ``` 引用[^4]中显示此版本可解决 HiveServer2 启动问题。 2. **源码适配(可选)** 若遇到类不兼容错误(如 `SparkCounter` 或 `ShuffleWriteMetrics`),需参照 Spark3 源码修改 Hive 相关模块[^3]。 #### 四、验证与启动 1. **启动 HiveServer2** 执行以下命令并检查日志: ```bash hive --service hiveserver2 ``` 若启动失败,查看日志中 `ClassNotFoundException` 或版本冲突提示。 2. **执行测试查询** 在 Hive CLI 中运行: ```sql SET hive.execution.engine=tez; SELECT COUNT(*) FROM table_name; ``` 观察作业是否通过 Tez 执行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值