组件配置
Ubuntu20.04, JDK8 Hadoop3.3.4, Hive3.1.3, MYSQL8.0.42 Spark3.4.4
Hive3.1.3安装配置
#确保 Hadoop 服务正常运行
bash
# 1. 检查 Hadoop 进程(必须看到 NameNode/ResourceManager)
jps
# 2. 若未启动,先启动 Hadoop
start-dfs.sh
start-yarn.sh
第一步:解压 Hive 安装包到系统目录
解压安装包到 /usr/local/
bash
sudo tar -zxvf ~/apache-hive-3.1.3-bin.tar.gz -C /usr/local/
# 仅修改文件夹权限(避免操作权限不足)
sudo chown -R $USER:$USER /usr/local/apache-hive-3.1.3-bin
# 给用户加个软链接
ln -s /usr/local/apache-hive-3.1.3-bin hive-3.1.3
第二步:安装配置 Hive 3.1.3
bash
sudo nano /etc/profile
# Hive 环境变量(在文件末尾添加)
export HIVE_HOME=/usr/local/apache-hive-3.1.3-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$HIVE_HOME/bin:$PATH
source /etc/profile
【新开终端 / 重启后,未重新 source /etc/profile,配置不生效】
【要永久生效则要添加到~/.bashrc 里】
验证是否生效:hive --version
第三步:解决 Hive 与 Hadoop 的日志依赖冲突(必做!第三步:解决 Hive 与 Hadoop 的日志依赖冲突(必做!)
【Hive 3.1.3 和 Hadoop 3.3.4 存在日志包冲突,不处理会启动报错】
bash
# 删除 Hive 中冲突的日志包
rm -rf $HIVE_HOME/lib/log4j-slf4j-impl-2.17.1.jar
第四步:修改 Hive 核心配置文件
- 新建 / 修改 hive-site.xml(核心配置)
xml
nano $HIVE_HOME/conf/hive-site.xml
清空原有内容,粘贴以下配置(适配 Hadoop 3.3.4 + node1 主机名):
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 1. 指定 Hive 数据仓库在 HDFS 的元数据的存储路径 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 2. 指定 Hive 临时文件路径 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<!-- 3. 指定 HDFS 地址(和 Hadoop core-site.xml 一致) -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 4. 元数据存储方式:本地 Derby(新手推荐,无需额外安装数据库) -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/usr/local/apache-hive-3.1.3-bin/metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<!-- 5. 关闭元数据存储授权(新手友好) -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<!-- 6. 关闭 Hive 权限检查(新手友好) -->
<property>
<name>hive.security.authorization.enabled</name>
<value>false</value>
</property>
<!-- 7. 开启 Hive CLI 交互模式(解决启动警告) -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 8. 适配 Hadoop 3.x 版本(关键) -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
- 修改 hive-env.sh(指定 Hadoop 路径)
bash
# 复制模板文件
cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh
# 编辑配置
nano $HIVE_HOME/conf/hive-env.sh
在文件末尾添加:
# 指定 Hadoop 安装路径
export HADOOP_HOME=/usr/local/hadoop-3.3.4
# 指定 Hive 配置文件路径
export HIVE_CONF_DIR=/usr/local/apache-hive-3.1.3-bin/conf
# 指定 JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
第五步:初始化 Hive 元数据(仅首次执行)
【Hive 安装时,要在HDFS上创建Hive 所需目录,需要 HDFS 在线】
bash
# 在 HDFS 上创建 Hive 所需目录(存储元数据、临时文件):
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
# 修改目录权限(避免读写报错)
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -chmod 777 /tmp/hive
报的一个警告:util.NativeCodeLoader工具类加载失败
【这个类加载失败, "原生库就用不了"】
【原生库能用就用,不能用就自动切换到纯 Java 实现】

初始化元数据(Derby 模式)
schematool -initSchema -dbType derby
#报警告:
- (schematool 是为 MySQL/PostgreSQL 等主流数据库设计的,对 Derby 的兼容性不好,最后一步检查失败了,但不影响 Hive 运行)【为了兼容,可以Derby换成MYSQL】
- 【MySQL/PostgreSQL 场景: Hive 会在元数据库中创建一个名为 HIVE 的独立 Schema(相当于「数据库下的子命名空间」),所有元数据表都放在这个 Schema 下,所以 schematool 检查 HIVE Schema 能找到,校验通过。】
- 【Derby 场景: Derby 是轻量级嵌入式数据库,没有「独立 Schema」的概念 ------ 它只有「用户」的概念,默认把所有表创建在内置的 APP 用户下,而非 HIVE Schema。但 schematool 不管数据库类型,一律执行 SELECT * FROM "HIVE"."VERSION" 检查,自然找不到,就抛出「Schema 'HIVE' does not exist」的误报。】

第六步:启动 Hive 并验证
sql
# 启动 Hive CLI(命令行交互)
hive
验证操作(在 Hive CLI 中执行):
-- 1. 创建测试数据库
create database test_db;
-- 2. 查看数据库列表
show databases;
-- 3. 使用测试数据库
use test_db;
-- 4. 创建测试表
create table test_table (id int, name string);
-- 5. 插入测试数据
insert into test_table values (1, 'hive_test');
-- 6. 查询数据(能查到结果说明配置成功)
select * from test_table;
退出 Hive CLI:
exit;
第七步:验证 Hive 数据存储在 HDFS
- 回到 Hadoop Web 界面(http://node1:9870),
- 点击 Utilities → Browse the file system,进入 /user/hive/warehouse/test_db.db/test_table,
- 能看到插入数据的文件,说明 Hive 与 HDFS 连通正常。