0%

hive下载安装

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
2
# 下载地址(清华大学镜像)  
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

解压与目录配置

1
2
3
4
# 解压到指定目录(如 /usr/local/myself)  
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/myself/
# 重命名目录(可选,简化路径)
mv /usr/local/myself/apache-hive-3.1.2-bin /usr/local/myself/hive-3.1.2

环境变量配置

配置 Hive 环境变量

编辑 ~/.bash_profile/etc/profile,添加以下内容:

1
2
3
# Hive 环境变量  
export HIVE_HOME=/usr/local/myself/hive-3.1.2
export PATH=$HIVE_HOME/bin:$PATH

生效环境变量

1
source ~/.bash_profile  # 或 source /etc/profile  

Hive 初始化与启动(默认 Derby 存储)

Hive 首次启动前需初始化元数据库,默认使用嵌入式 Derby 数据库存储元数据(适合测试,不适合生产)。

初始化元数据库

1
2
3
cd $HIVE_HOME  
# 初始化 Derby 元数据库
bin/schematool -dbType derby -initSchema

启动 Hive 客户端

1
2
3
bin/hive  
# 进入 Hive 命令行,显示 "hive> " 即成功
hive> show databases; # 验证基本功能

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
2
3
cd $HIVE_HOME/conf  
cp hive-default.xml.template hive-site.xml # 复制模板(可选)
vim hive-site.xml # 编辑配置文件

添加以下核心配置(替换为你的 MySQL 信息):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0"?>  
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 1. MySQL 连接 URL(metastore 为数据库名,需提前创建) -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?useSSL=false&amp;allowPublicKeyRetrieval=true</value>
<!-- 注意:XML 中 & 需转义为 &amp; -->
</property>

<!-- 2. MySQL 驱动类 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value> <!-- MySQL 5.x 驱动 -->
<!-- MySQL 8.x 需使用:com.mysql.cj.jdbc.Driver -->
</property>

<!-- 3. MySQL 用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value> <!-- 替换为你的 MySQL 用户名 -->
</property>

<!-- 4. MySQL 密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value> <!-- 替换为你的 MySQL 密码 -->
</property>

<!-- 5. 关闭元数据版本验证(避免版本不一致报错) -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>

<!-- 6. 禁用元数据存储授权(简化配置) -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>

初始化 MySQL 元数据库

(1)创建 MySQL 数据库

登录 MySQL 并创建 metastore 数据库(与 hive-site.xml 中配置一致):

1
2
3
4
5
6
mysql -u root -p  
# 输入密码后执行:
CREATE DATABASE metastore CHARACTER SET utf8 COLLATE utf8_general_ci; -- 支持中文
GRANT ALL PRIVILEGES ON metastore.* TO 'root'@'localhost' IDENTIFIED BY '123456'; -- 授权
FLUSH PRIVILEGES; -- 刷新权限
exit;
(2)初始化 Hive 元数据到 MySQL
1
2
3
4
cd $HIVE_HOME  
# 使用 MySQL 初始化元数据库
bin/schematool -dbType mysql -initSchema
# 成功提示:schemaTool completed

启动 Hive 并验证 MySQL 配置

1
2
3
4
5
6
7
8
9
10
# 启动 Hive 客户端  
bin/hive

# 验证元数据存储是否生效
hive> create database test_db; # 创建测试数据库

# 登录 MySQL 查看元数据是否同步
mysql -u root -p
use metastore;
select NAME from DBS; # 应显示 test_db,说明元数据已存储到 MySQL

启动 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
2
3
4
5
6
# 打开第一个终端  
bin/hive

# 打开第二个终端(另一个客户端)
bin/hive
# 此时可正常执行命令,无冲突

欢迎关注我的其它发布渠道