分布式Hadoop集群中的Hive安装
·
1. 环境准备
1.1 下载Hive
# 下载Hive(以3.1.3版本为例)
wget https://downloads.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
# 解压
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/
mv /usr/local/apache-hive-3.1.3-bin /usr/local/hive
1.2 安装Java和Hadoop依赖
确保所有节点已安装:
- JDK 1.8+
- Hadoop已正确配置并运行(可以看我之前的完全分布式Hadoop指南)
2. 配置环境变量
2.1 在所有节点配置环境变量
# 编辑 /etc/profile 或 ~/.bashrc
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
# 使配置生效
source /etc/profile
3. 配置Hive
3.1 复制模板配置文件
cd /usr/local/hive/conf
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
3.2 配置hive-env.sh
# 设置Hadoop路径
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
3.3 配置hive-site.xml
<configuration>
<!-- Hive元数据存储方式 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://{你主机的ip}:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!-- JDBC驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- 数据库用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>{预计登录mysql的用户名}</value>
</property>
<!-- 数据库密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>{登录mysql的账号密码}</value>
</property>
<!-- Hive数据仓库位置 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 本地临时目录 -->
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
</property>
<!-- 查询结果临时目录 -->
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive/resources</value>
</property>
<!-- 启用Spark执行引擎(可选) -->
<property>
<name>hive.execution.engine</name>
<value>spark</value>
</property>
<!-- 启用本地模式 -->
<property>
<name>hive.exec.mode.local.auto</name>
<value>true</value>
</property>
</configuration>
4. 安装配置MySQL(作为元数据存储)
4.1 安装MySQL
# CentOS/RHEL
sudo yum install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
# Ubuntu/Debian
sudo apt-get install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
4.2 配置MySQL
-- 登录MySQL
mysql -u root -p
-- 创建Hive数据库
CREATE DATABASE hive CHARACTER SET latin1;
-- 创建Hive用户并授权
CREATE USER 'hive'@'%' IDENTIFIED BY 'hivepassword';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 修改MySQL配置允许远程连接
-- 编辑 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf
-- 注释掉 bind-address = 127.0.0.1
-- 检查一下即可,可能不涉及修改
4.3 下载MySQL JDBC驱动
# 下载MySQL连接器
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.28.tar.gz
tar -zxvf 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/
5. 初始化Hive元数据库
5.1 创建HDFS目录
# 使用Hadoop用户创建必要目录
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -chmod -R 777 /tmp/hive
5.2 初始化Schema
# 初始化元数据库
schematool -dbType mysql -initSchema
# 验证初始化
schematool -dbType mysql -info
6. 配置Hive服务模式
6.1 本地模式(单节点使用)
# 直接启动Hive CLI
hive
6.2 远程模式(推荐用于分布式)
6.2.1 配置Metastore服务
<!-- 在hive-site.xml中添加 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://{你的主机ip}:9083</value>
</property>
6.2.2 启动Metastore服务
# 在master节点启动Metastore
nohup hive --service metastore > /var/log/hive/metastore.log 2>&1 &
# 验证服务
netstat -an | grep 9083
6.2.3 启动HiveServer2(可选)
# 启动HiveServer2
nohup hive --service hiveserver2 > /var/log/hive/hiveserver2.log 2>&1 &
# 或使用单独的命令
hiveserver2 --hiveconf hive.server2.thrift.port=10000 &
7. 测试Hive安装
7.1 基本测试
# 启动Hive CLI
hive
# 执行测试命令
show databases;
create database test_db;
use test_db;
create table test(id int, name string);
show tables;
insert into test values(1, 'test');
select * from test;
7.2 连接HiveServer2(如已启动)
# 使用beeline连接
beeline -u jdbc:hive2://master:10000 -n hadoop
8. 集群配置
8.1 分发配置到所有节点
# 将Hive安装目录分发到所有节点
scp -r /usr/local/hive node1:/usr/local/
scp -r /usr/local/hive node2:/usr/local/
scp -r /usr/local/hive node3:/usr/local/
# 分发环境变量配置
scp /etc/profile node1:/etc/
scp /etc/profile node2:/etc/
scp /etc/profile node3:/etc/
8.2 配置Hive高可用(可选)
<!-- 配置多个Metastore实例 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://master1:9083,thrift://master2:9083</value>
</property>
9. 常见问题解决
9.1 权限问题
# 解决HDFS权限问题
hdfs dfs -chmod 777 /tmp
hdfs dfs -chmod 777 /user/hive/warehouse
9.2 内存配置
# 调整Hive内存设置
export HADOOP_HEAPSIZE=2048
export HADOOP_CLIENT_OPTS="-Xmx2048m"
9.3 日志查看
# 查看Hive日志
tail -f /tmp/{username}/hive.log
10. 性能优化建议
10.1 配置建议
<!-- 启用压缩 -->
<property>
<name>hive.exec.compress.output</name>
<value>true</value>
</property>
<!-- 启用向量化查询 -->
<property>
<name>hive.vectorized.execution.enabled</name>
<value>true</value>
</property>
<!-- 设置并行执行 -->
<property>
<name>hive.exec.parallel</name>
<value>true</value>
</property>
这样就完成了在完全分布式Hadoop集群上搭建Hive的过程。根据实际需求,你可能还需要配置Tez、Spark等执行引擎来提升查询性能。
更多推荐

所有评论(0)