环境准备
1. 前置条件
Hadoop集群:Hadoop 3.2.4(已正常启动)
Java:JDK 8
数据库:MySQL(用于存储元数据)
2. 下载Hive
wget https://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
tar -xzf apache-hive-3.1.3-bin.tar.gz -C /home/phoenix/apps/bigdata配置环境变量
# 编辑 ~/.bashrc
export HIVE_HOME=/home/phoenix/apps/bigdata/apache-hive-3.1.3-bin
export PATH=$PATH:$HIVE_HOME/bin
# 使环境变量生效
source ~/.bashrc配置Hive
1. 创建配置文件
cd $HIVE_HOME/conf
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-log4j2.properties.template hive-log4j2.properties2. 配置hive-env.sh
# 设置Hadoop路径
export HADOOP_HOME=/home/phoenix/apps/bigdata/hadoop-3.2.4
# 设置Hive配置目录
export HIVE_CONF_DIR=$HIVE_HOME/conf
# 设置Hive Jar包路径
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
# spark配置
export SPARK_HOME=/home/phoenix/apps/bigdata/spark-3.4.4-bin-without-hadoop
export SPARK_CONF_DIR=/home/phoenix/apps/bigdata/spark-3.4.4-bin-without-hadoop/conf3. 配置hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>system:java.io.tmpdir</name>
<value>/home/phoenix/apps/bigdata/hive_data/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>phoenix</value>
</property>
<!-- Hive元数据存储位置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive3?createDatabaseIfNotExist=true</value>
</property>
<!-- MySQL JDBC驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- 数据库用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive3</value>
</property>
<!-- 数据库密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!-- Hive数据仓库在HDFS中的位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive3/warehouse</value>
</property>
<!-- 启用本地模式执行 -->
<property>
<name>hive.exec.mode.local.auto</name>
<value>true</value>
</property>
<!-- 显示当前数据库 -->
<property>
<name>hive.cli.print.current.db</name>
<value>false</value>
</property>
<!-- 显示表头 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!-- 切换spark 执行引擎配置 非必须-->
<!-- 设置执行引擎为spark -->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<!-- Spark master URL -->
<property>
<name>spark.master</name>
<value>yarn</value>
</property>
<!-- Spark执行模式 -->
<property>
<name>spark.submit.deployMode</name>
<value>client</value>
</property>
<!-- Spark应用名称 -->
<property>
<name>spark.app.name</name>
<value>Hive-Spark</value>
</property>
<!-- Spark驱动程序内存 -->
<property>
<name>spark.driver.memory</name>
<value>2g</value>
</property>
<!-- Spark执行器内存 -->
<property>
<name>spark.executor.memory</name>
<value>2g</value>
</property>
<!-- Spark执行器核心数 -->
<property>
<name>spark.executor.cores</name>
<value>2</value>
</property>
<!-- Spark执行器实例数 -->
<property>
<name>spark.executor.instances</name>
<value>1</value>
</property>
<!-- Spark序列化方式 -->
<property>
<name>spark.serializer</name>
<value>org.apache.spark.serializer.KryoSerializer</value>
</property>
</configuration>数据库配置
1. 安装MySQL
# Ubuntu/Debian
sudo apt-get install mysql-server
# CentOS/RHEL
sudo yum install mysql-server2. 创建Hive数据库和用户
CREATE DATABASE hive3;
CREATE USER 'hive3'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON hive3.* TO 'hive3'@'%';
FLUSH PRIVILEGES;3. 下载MySQL JDBC驱动
tar -xzf mysql-connector-java-8.0.28.tar.gz
cp mysql-connector-java-8.0.28/mysql-connector-java-8.0.28.jar $HIVE_HOME/lib/初始化Hive
1. 创建HDFS目录
hadoop fs -mkdir -p /user/hive3/warehouse
hadoop fs -mkdir -p /tmp/hive
hadoop fs -chmod 777 /user/hive3/warehouse
hadoop fs -chmod 777 /tmp/hive2. 初始化元数据库
# 使用schematool初始化
$HIVE_HOME/bin/schematool -dbType mysql -initSchema启动和测试
1. 启动Hive服务
## 启动Metastore服务(后台运行)
# 方式1:前台启动 (用于调试)
$HIVE_HOME/bin/hive --service metastore
# 方式2:后台启动
nohup $HIVE_HOME/bin/hive --service metastore > /home/phoenix/apps/bigdata/hive_data/logs/hive_metastore.log 2>&1 &
## 启动HiveServer2
# 方式1:前台启动 (用于调试)
$HIVE_HOME/bin/hiveserver2
# 方式2:后台启动
nohup $HIVE_HOME/bin/hiveserver2 > /home/phoenix/apps/bigdata/hive_data/logs/hive_hiveserver2.log 2>&1 &2. 测试Hive
##1 通过Beeline连接hiveserver
$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000 -n phoenix
##2 进入Hive CLI
$HIVE_HOME/bin/hive
# 执行测试命令
hive> SHOW DATABASES;
hive> CREATE DATABASE test;
hive> USE test;
hive> CREATE TABLE employee (id INT, name STRING, salary FLOAT);
hive> INSERT INTO employee VALUES (1, 'John', 5000.0);
hive> SELECT * FROM employee;
hive> SHOW TABLES;开机自启动:
cat /etc/systemd/system/hive3.service
[Unit]
Description=Apache Hive 3 Service
After=networkd-dispatcher.service mysql.service hadoop.service
[Service]
ExecStart=sudo su phoenix -c "nohup /home/phoenix/apps/bigdata/apache-hive-3.1.3-bin/bin/hive --service metastore &"
ExecStartPost=/bin/sleep 5
ExecStartPost=sudo su phoenix -c "nohup /home/phoenix/apps/bigdata/apache-hive-3.1.3-bin/bin/hiveserver2 &"
[Install]
WantedBy=multi-user.targetsudo systemctl enable hive3.service
sudo systemctl start hive3.service
常见问题解决
1. 权限问题
# 确保HDFS目录权限正确
hadoop fs -chmod -R 755 /user/hive
hadoop fs -chown -R hive:users /user/hive2. 数据库连接问题
检查MySQL服务是否启动
验证连接URL、用户名和密码
确认MySQL驱动在classpath中
3. 端口冲突
# 检查端口占用
netstat -tunlp | grep 9083 # Metastore端口
netstat -tunlp | grep 10000 # HiveServer2端口4、启动metastore报错:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
at org.apache.hadoop.conf.Configuration.set(Configuration.java:1357)
at org.apache.hadoop.conf.Configuration.set(Configuration.java:1338)
解决:将hadoop中的Guava jar包同步替换hive的jar包。
rm $HIVE_HOME/lib/guava-*.jar
cp $HADOOP_HOME/share/hadoop/common/lib/guava-*.jar $HIVE_HOME/lib/5、初始化元数据库报错
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
at [row,col,system-id]: [3215,96,"file:/home/phoenix/apps/bigdata/apache-hive-3.1.3-bin/conf/hive-site.xml"]

解决:把去掉即可。
6、启动hiveserver2后没有报错,但是服务未正常执行,10000端口未开启。
$HIVE_HOME/bin/hiveserver2 --hiveconf hive.root.logger=DEBUG,console 显示连接localhost/127.0.0.1:9000后连接中断。
查看/tmp/phoenix/hive.log日志,发现报错信息如下:
2025-11-18T08:59:08,541 INFO [main] server.HiveServer2: Starting HiveServer2
2025-11-18T08:59:08,579 INFO [main] server.HiveServer2: Shutting down HiveServer2
2025-11-18T08:59:08,579 INFO [main] server.HiveServer2: Stopping/Disconnecting tez sessions.
2025-11-18T08:59:08,579 WARN [main] server.HiveServer2: Error starting HiveServer2 on attempt 20, will retry in 60000ms
java.lang.RuntimeException: Error applying authorization policy on hive configuration: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
解决:在hive-site.xml开头添加两个属性:
<property>
<name>system:java.io.tmpdir</name>
<value>/home/phoenix/apps/bigdata/hive_data/tmp</value>
</property>
<property>
<name>system:user.name</name>
<value>phoenix</value>
</property>
完成以上步骤后,Hive 3.1.3应该已经成功安装并可以正常使用。记得根据实际环境调整配置参数。
评论