(AI 总结版)在 Windows 11 WSL Ubuntu 上安装和使用 Hive 完整教程
本教程详细介绍了在Windows11 WSL Ubuntu环境下安装配置Hive 3.1.3的完整流程。
主要内容包括:环境准备(Java8、Hadoop3.3.6、MySQL)、Hive下载安装、MySQL元数据库配置、核心文件设置、Java版本兼容性处理、启动脚本编写以及基础操作测试。
重点解决了常见问题如Java版本冲突、元数据库初始化失败等,并提供了日常使用流程和注意事项。
教程强调必须使用Java8环境,并确保Hadoop和MySQL服务正常运行,最后附有常用命令速查和目录结构说明,帮助用户快速掌握Hive在WSL环境中的部署和使用。
在 Windows 11 WSL Ubuntu 上安装和使用 Hive 完整教程
本教程基于你在 WSL Ubuntu 环境中的实际操作经验整理,适用于已经配置好 Hadoop 3.3.6 的环境。
一、环境要求
1.1 已安装的环境
-
✅ Windows 11 + WSL2 + Ubuntu(22.04 或 24.04)
-
✅ Hadoop 3.3.6 正常运行
-
✅ Java 8(Hive 3.1.3 推荐使用 Java 8)
-
✅ MySQL 作为元数据库
1.2 检查当前环境
bash
# 检查 Java 版本(必须是 Java 8) java -version # 检查 Hadoop 是否运行 jps # 应该看到:NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager # 如果 Hadoop 未启动 start-all.sh
二、下载并安装 Hive
2.1 下载 Hive 3.1.3
bash
cd ~/downloads # 使用华为云的镜像源下载 wget https://repo.huaweicloud.com/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz # 文件大小约 312MB,下载完成后验证 ls -lh apache-hive-3.1.3-bin.tar.gz
2.2 解压安装
bash
# 解压到 /usr/local sudo tar -xzvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/ # 重命名目录 sudo mv /usr/local/apache-hive-3.1.3-bin /usr/local/hive # 修改权限 sudo chown -R $(whoami):$(whoami) /usr/local/hive
2.3 配置环境变量
bash
# 编辑 .bashrc vim ~/.bashrc
在文件末尾添加:
bash
# Hive Environment Variables export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin
保存退出后:
bash
# 使配置生效 source ~/.bashrc # 验证安装 hive --version
预期输出:Hive 3.1.3
三、配置 Hive 元数据库(MySQL)
3.1 检查并配置 MySQL
bash
# 检查 MySQL 状态 sudo service mysql status # 如果未运行,启动 MySQL sudo service mysql start
3.2 设置 MySQL root 密码(如未设置)
bash
# 无密码登录 sudo mysql # 在 MySQL 中执行 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES; EXIT; # 验证登录 mysql -u root -p123456 -e "show databases;"
3.3 下载 MySQL JDBC 驱动
bash
cd ~/downloads # 下载驱动(注意新版本路径) wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar # 复制到 Hive lib 目录 cp mysql-connector-j-8.0.33.jar $HIVE_HOME/lib/ # 验证 ls $HIVE_HOME/lib/mysql-connector*.jar
四、配置 Hive 核心文件
4.1 创建 hive-site.xml
bash
cd $HIVE_HOME/conf # 创建配置文件 vim hive-site.xml
输入以下内容:
xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- MySQL 数据库连接 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC</value>
</property>
<!-- MySQL JDBC 驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- MySQL 用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- MySQL 密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- Hive 数据仓库存储位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- Hive 临时目录 -->
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
</property>
<!-- 显示当前数据库 -->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!-- 显示字段名称 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
</configuration>
4.2 创建 HDFS 目录
bash
# 创建必要的 HDFS 目录 hdfs dfs -mkdir -p /tmp hdfs dfs -mkdir -p /user/hive/warehouse # 设置权限 hdfs dfs -chmod 777 /tmp hdfs dfs -chmod 777 /user/hive/warehouse # 验证 hdfs dfs -ls /
4.3 初始化 Hive 元数据库
bash
# 删除旧数据库(如果存在) mysql -u root -p123456 -e "DROP DATABASE IF EXISTS metastore;" # 初始化 schema schematool -dbType mysql -initSchema
预期输出:Initialization completed successfully
五、处理 Java 版本兼容性问题
5.1 问题现象
如果使用 Java 11 或 17,可能会遇到:
-
Module java.xml.bind not found -
ClassCastException错误
5.2 解决方案:使用 Java 8
bash
# 安装 Java 8 sudo apt update sudo apt install -y openjdk-8-jdk # 切换到 Java 8 sudo update-alternatives --config java # 选择 Java 8(通常选项编号为 2) # 更新环境变量 echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc source ~/.bashrc # 验证 java -version
5.3 清理 Java 11 残留参数
bash
# 清理所有配置文件中的 --add-modules sed -i '/--add-modules/d' ~/.bashrc sed -i '/--add-modules/d' $HADOOP_HOME/etc/hadoop/hadoop-env.sh sed -i '/--add-modules/d' $HADOOP_HOME/etc/hadoop/yarn-env.sh # 清空环境变量 unset HADOOP_OPTS export HADOOP_OPTS="" # 重启 Hadoop stop-all.sh start-all.sh
六、启动 Hive
6.1 确保服务正常运行
bash
# 1. 检查 Hadoop 进程 jps # 应该看到:NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager # 2. 检查 MySQL sudo service mysql status # 3. 清空环境变量 unset HADOOP_OPTS export HADOOP_OPTS=""
6.2 启动 Hive
bash
hive
预期看到:
text
hive (default)>
七、创建启动脚本(推荐)
7.1 创建 Hadoop + Hive 启动脚本
bash
# 创建启动脚本
cat > ~/bin/start-hive.sh << 'EOF'
#!/bin/bash
# 清空 Java 11 兼容性参数
unset HADOOP_OPTS
unset HADOOP_CLIENT_OPTS
unset HIVE_OPTS
export HADOOP_OPTS=""
echo "========================================="
echo "Starting Hive"
echo "========================================="
# 确保 Hadoop 已运行
if ! jps | grep -q "NameNode"; then
echo "Hadoop is not running. Please run start-hadoop.sh first"
exit 1
fi
# 启动 MySQL
sudo service mysql start
# 启动 Hive CLI
hive
EOF
chmod +x ~/bin/start-hive.sh
7.2 使用脚本
bash
# 先启动 Hadoop start-hadoop.sh # 再启动 Hive start-hive.sh
八、Hive 基础操作测试
8.1 基本命令
sql
-- 查看数据库 show databases; -- 创建数据库 create database mydb; -- 切换数据库 use mydb; -- 创建表 create table test(id int, name string); -- 查看表 show tables; -- 插入数据 insert into test values(1, 'hello'); -- 查询数据 select * from test; -- 退出 exit;
8.2 按照课堂笔记练习
sql
-- 创建 t_score 表
create table t_score(
sno int,
sname string,
class string,
score float
)
row format delimited fields terminated by '-';
8.3 导入数据文件
在另一个 SSH 窗口中:
bash
# 创建数据文件 cat > ~/score.txt << 'EOF' 101-zhangsan-yuwen-90 102-lisi-shuxue-85 103-wangwu-yingyu-88 EOF # 上传到 HDFS hdfs dfs -mkdir -p /user/mumu hdfs dfs -put ~/score.txt /user/mumu/
回到 Hive:
sql
-- 加载数据 load data inpath '/user/mumu/score.txt' into table t_score; -- 查询验证 select * from t_score;
九、常见问题及解决
9.1 Hive 启动报错 Module java.xml.bind not found
原因:使用了 Java 11/17,Hive 3.1.3 不兼容
解决:切换到 Java 8
bash
sudo update-alternatives --config java # 选择 Java 8
9.2 Unable to instantiate SessionHiveMetaStoreClient
原因:元数据库未正确初始化
解决:
bash
mysql -u root -p123456 -e "DROP DATABASE IF EXISTS metastore;" schematool -dbType mysql -initSchema
9.3 Connection refused 连接 HDFS 失败
原因:Hadoop 未启动或 NameNode 未运行
解决:
bash
jps # 检查进程 start-all.sh # 重启 Hadoop
9.4 JDBC 驱动下载 404
原因:Maven 仓库路径变更
解决:使用新路径
bash
wget https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar
十、Hive 常用命令速查
| 命令 | 说明 |
|---|---|
show databases; |
查看所有数据库 |
create database 数据库名; |
创建数据库 |
use 数据库名; |
切换数据库 |
show tables; |
查看当前数据库的所有表 |
desc 表名; |
查看表结构 |
create table ... |
创建表 |
load data inpath '路径' into table 表名; |
加载数据 |
select * from 表名; |
查询数据 |
drop table 表名; |
删除表 |
exit; |
退出 Hive |
十一、目录结构总览
text
/usr/local/
├── hadoop/ # Hadoop 安装目录
│ ├── bin/
│ ├── etc/
│ ├── logs/
│ └── sbin/
└── hive/ # Hive 安装目录
├── bin/ # Hive 可执行文件
├── conf/ # Hive 配置文件
│ └── hive-site.xml
└── lib/ # Hive 依赖库
└── mysql-connector-j-8.0.33.jar
~/bin/
├── start-hadoop.sh # Hadoop 启动脚本
├── stop-hadoop.sh # Hadoop 停止脚本
└── start-hive.sh # Hive 启动脚本
十二、日常使用流程
12.1 启动所有服务
bash
# 方法一:分步启动 start-hadoop.sh # 启动 Hadoop start-hive.sh # 启动 Hive # 方法二:直接启动 Hive(会检查 Hadoop 状态) start-hive.sh
12.2 停止服务
bash
stop-hadoop.sh # 停止 Hadoop
12.3 验证服务状态
bash
jps # 查看 Java 进程 hdfs dfs -ls / # 测试 HDFS
十三、注意事项
| 项目 | 说明 |
|---|---|
| Java 版本 | Hive 3.1.3 必须使用 Java 8,否则会有兼容性问题 |
| Hadoop 状态 | 启动 Hive 前确保 Hadoop 正在运行 |
| MySQL 服务 | 确保 MySQL 已启动:sudo service mysql start |
| 环境变量 | 启动前清空 HADOOP_OPTS:unset HADOOP_OPTS |
| SLF4J 警告 | 可以忽略,不影响使用 |
| Hive-on-MR 警告 | 表示使用 MapReduce,正常现象 |
恭喜!你已经成功在 WSL Ubuntu 上安装并配置了 Hive,可以开始按照课堂笔记练习了!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)