QingYingX的博客 In solitude, where we are least alone.

QingYingX / Hive 搭建教程

Created Tue, 01 Apr 2025 00:00:00 +0800 Modified Thu, 18 Dec 2025 10:20:47 +0000
1208 Words

Apache Hive 安装配置教程

1. 前置依赖

  • Hadoop 集群(已安装并正常运行)
  • MySQL 数据库(5.7或8.0版本)
  • Hive 安装包(下载对应版本)

2. 环境准备

2.1 创建Hive数据库和用户

-- 登录MySQL
mysql -u root -p

-- 创建Hive元数据库
CREATE DATABASE hive CHARACTER SET utf8 COLLATE utf8_general_ci;

-- 创建Hive用户并授权
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive123';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';
FLUSH PRIVILEGES;

3. Hive安装配置

3.1 解压安装包

# 解压Hive安装包(以3.1.2版本为例)
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /root/software/
mv apache-hive-3.1.2-bin hive

3.2 配置环境变量

# 编辑环境变量配置文件
vim /etc/profile

# 添加以下内容
export HIVE_HOME=/root/software/hive
export PATH=$PATH:$HIVE_HOME/bin

# 使配置生效
source /etc/profile

3.3 更新Guava依赖

# 删除Hive原有的旧版本Guava(重要!)
rm -f $HIVE_HOME/lib/guava-*.jar

# 复制Hadoop的Guava库到Hive
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/

3.4 配置MySQL驱动

# 将MySQL驱动jar包放入hive/lib目录
cp mysql-connector-java-8.0.28.jar $HIVE_HOME/lib/

4. 核心配置文件

4.1 创建hive-site.xml

cd $HIVE_HOME/conf
vim hive-site.xml

添加以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
    <!-- MySQL连接配置 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive123</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <!-- Hive元数据配置 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/hive</value>
    </property>

    <!-- Hiveserver2配置 -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>master</value>
    </property>
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>
</configuration>

4.2 配置独立Metastore服务(可选)

如需使用独立Metastore服务,在hive-site.xml中添加:

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
</property>

5. Hadoop配置

5.1 创建HDFS目录

# 创建Hive仓库目录
hdfs dfs -mkdir -p /hive
hdfs dfs -chmod g+w /hive

# 创建临时目录
hdfs dfs -mkdir -p /tmp
hdfs dfs -chmod g+w /tmp

5.2 配置代理用户(Hiveserver2需要)

在core-site.xml中添加:

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.users</name>
    <value>*</value>
</property>

重启Hadoop服务:

stop-all.sh
start-all.sh

6. 服务初始化和启动

6.1 初始化元数据库

# 初始化Hive元数据库
schematool -initSchema -dbType mysql

# 验证初始化成功
mysql -u hive -p -e "USE hive; SHOW TABLES;"

6.2 启动Metastore服务

# 方式1:前台启动(测试用)
hive --service metastore

# 方式2:后台启动
nohup hive --service metastore > $HIVE_HOME/metastore.log 2>&1 &

6.3 启动Hiveserver2服务

# 方式1:前台启动(测试用)
hive --service hiveserver2

# 方式2:后台启动
nohup hive --service hiveserver2 > $HIVE_HOME/hiveserver2.log 2>&1 &

6.4 验证服务状态

# 检查Metastore服务(端口9083)
netstat -an | grep 9083

# 检查Hiveserver2服务(端口10000)
netstat -an | grep 10000

# 查看服务日志
tail -f $HIVE_HOME/metastore.log
tail -f $HIVE_HOME/hiveserver2.log

7. 基本使用测试

7.1 命令行使用

# 启动Hive CLI
hive

# 执行基本操作
SHOW DATABASES;
CREATE DATABASE test;
USE test;
CREATE TABLE users (id INT, name STRING);
SHOW TABLES;

7.2 通过Beeline连接

# 连接到Hiveserver2
beeline -u jdbc:hive2://master:10000 -n root

# 执行SQL
!connect jdbc:hive2://master:10000

8. 常见问题解决

8.1 Guava版本冲突

# 确保已更新Guava依赖
ls $HIVE_HOME/lib/guava*.jar
ls $HADOOP_HOME/share/hadoop/common/lib/guava*.jar

8.2 MySQL连接问题

# 检查MySQL服务状态
systemctl status mysqld

# 检查防火墙
systemctl status firewalld
firewall-cmd --list-ports

# 测试MySQL连接
mysql -u hive -p -h master

8.3 HDFS权限问题

# 检查HDFS目录权限
hdfs dfs -ls /hive
hdfs dfs -ls /tmp

# 修复权限
hdfs dfs -chmod -R 777 /hive
hdfs dfs -chmod -R 777 /tmp

8.4 服务启动失败

# 检查日志文件
tail -f $HIVE_HOME/metastore.log
tail -f $HIVE_HOME/hiveserver2.log

# 检查端口占用
netstat -tlnp | grep 9083
netstat -tlnp | grep 10000

# 杀死占用进程
kill -9 <pid>

9. 服务管理脚本

9.1 创建启动脚本

# 创建metastore启动脚本
vim $HIVE_HOME/bin/start-metastore.sh
#!/bin/bash
nohup hive --service metastore > $HIVE_HOME/metastore.log 2>&1 &
echo "Metastore started"

# 创建hiveserver2启动脚本
vim $HIVE_HOME/bin/start-hiveserver2.sh
#!/bin/bash
nohup hive --service hiveserver2 > $HIVE_HOME/hiveserver2.log 2>&1 &
echo "Hiveserver2 started"

# 添加执行权限
chmod +x $HIVE_HOME/bin/*.sh

9.2 停止服务

# 停止Metastore
pkill -f "metastore"

# 停止Hiveserver2
pkill -f "hiveserver2"