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依赖

确保所有节点已安装:

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&amp;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等执行引擎来提升查询性能。

Logo

更多推荐