hive下载安装
使用的版本是3.1.2
Hive 的安装配置是使用 Hive 进行大数据分析的基础,涉及环境依赖、元数据存储配置及常见问题解决。本文基于 Hive 3.1.2 版本,详细讲解从下载到启动的完整流程,重点解决元数据存储(Derby 转 MySQL)的核心问题。
环境准备与依赖检查
在安装 Hive 前,需确保以下依赖已正确配置:
基础依赖
JDK:推荐 JDK 8(Hive 3.1.2 对 JDK 11 支持有限);
Hadoop:需提前安装并启动 Hadoop 集群(本文以 Hadoop 3.3.0 为例),确保 HDFS 和 YARN 正常运行:
1
2
3
4
5启动 Hadoop 集群
start-dfs.sh
start-yarn.sh
验证 Hadoop 状态
jps # 应显示 NameNode、DataNode、ResourceManager、NodeManager 等进程
Hive 下载与安装
下载 Hive 安装包
从 Apache 镜像站下载 Hive 3.1.2 版本:
1 | 下载地址(清华大学镜像) |
解压与目录配置
1 | 解压到指定目录(如 /usr/local/myself) |
环境变量配置
配置 Hive 环境变量
编辑 ~/.bash_profile 或 /etc/profile,添加以下内容:
1 | Hive 环境变量 |
生效环境变量
1 | source ~/.bash_profile # 或 source /etc/profile |
Hive 初始化与启动(默认 Derby 存储)
Hive 首次启动前需初始化元数据库,默认使用嵌入式 Derby 数据库存储元数据(适合测试,不适合生产)。
初始化元数据库
1 | cd $HIVE_HOME |
启动 Hive 客户端
1 | bin/hive |
Derby 存储的局限性
Derby 是嵌入式数据库,存在明显缺陷:
单客户端限制:同一时间只能有一个 Hive 客户端连接,启动第二个客户端会报错:
1
Another instance of Derby may have already booted the database metastore_db
元数据存储分散:元数据文件默认存放在
$HIVE_HOME/metastore_db,迁移和备份困难。
结论:Derby 仅适合单机测试,生产环境必须改用 MySQL 等关系型数据库存储元数据。
元数据存储迁移至 MySQL(生产环境配置)
将元数据存储从 Derby 改为 MySQL,可支持多客户端连接并提升元数据管理效率。
准备工作
安装 MySQL:确保 MySQL 服务正常运行(推荐 MySQL 5.7 或 8.0);
下载 MySQL 驱动包:Hive 需通过 JDBC 连接 MySQL,需将驱动包放入 Hive 的lib目录:
1
2
3
4下载 MySQL 驱动(以 MySQL 5.7 为例)
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar
移动到 Hive 的 lib 目录
mv mysql-connector-java-5.1.49.jar $HIVE_HOME/lib/
配置 Hive 元数据连接(hive-site.xml)
Hive 默认没有 hive-site.xml,需手动创建或从模板复制:
1 | cd $HIVE_HOME/conf |
添加以下核心配置(替换为你的 MySQL 信息):
1 |
|
初始化 MySQL 元数据库
(1)创建 MySQL 数据库
登录 MySQL 并创建 metastore 数据库(与 hive-site.xml 中配置一致):
1 | mysql -u root -p |
(2)初始化 Hive 元数据到 MySQL
1 | cd $HIVE_HOME |
启动 Hive 并验证 MySQL 配置
1 | 启动 Hive 客户端 |
启动 Hive 时的常见问题与解决
1. “Hive-on-MR is deprecated” 警告
启动 Hive 时出现以下警告:
1 | Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. |
原因:Hive 3.1.2 默认使用 MapReduce 作为执行引擎,但该引擎已被标记为过时。
解决:可配置为 Tez 或 Spark 引擎提升性能(需额外安装对应组件),暂不处理也可正常使用。
2. 元数据初始化失败
报错信息:Schema initialization FAILED! Metastore state would be inconsistent!
可能原因:
- MySQL 驱动包版本不匹配(如 MySQL 8.x 使用了 5.x 驱动);
hive-site.xml中连接 URL 错误(如端口、数据库名错误);- MySQL 用户权限不足。
解决:检查驱动包版本、连接配置及 MySQL 授权。
3. 多客户端连接冲突
使用 MySQL 存储元数据后,可同时启动多个 Hive 客户端,解决 Derby 单客户端限制:
1 | 打开第一个终端 |