spark+hive-分布式-大数据项目篇 2——Hive3.1.3安装配置

0 阅读2分钟

组件配置

Ubuntu20.04, JDK8 Hadoop3.3.4, Hive3.1.3, MYSQL8.0.42 Spark3.4.4

Hive3.1.3安装配置

#确保 Hadoop 服务正常运行

# 1. 检查 Hadoop 进程(必须看到 NameNode/ResourceManager)
jps
# 2. 若未启动,先启动 Hadoop
start-dfs.sh
start-yarn.sh

第一步:解压 Hive 安装包到系统目录

解压安装包到 /usr/local/

sudo tar -zxvf ~/apache-hive-3.1.3-bin.tar.gz -C /usr/local/

# 仅修改文件夹权限(避免操作权限不足)
sudo chown -R $USER:$USER /usr/local/apache-hive-3.1.3-bin

# 给用户加个软链接
ln -s /usr/local/apache-hive-3.1.3-bin hive-3.1.3

第二步:安装配置 Hive 3.1.3

sudo nano /etc/profile
# Hive 环境变量(在文件末尾添加)
export HIVE_HOME=/usr/local/apache-hive-3.1.3-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$HIVE_HOME/bin:$PATH

source /etc/profile
【新开终端 / 重启后,未重新 source /etc/profile,配置不生效】
【要永久生效则要添加到~/.bashrc 里】
验证是否生效:hive --version

第三步:解决 Hive 与 Hadoop 的日志依赖冲突(必做!第三步:解决 Hive 与 Hadoop 的日志依赖冲突(必做!)

【Hive 3.1.3 和 Hadoop 3.3.4 存在日志包冲突,不处理会启动报错】

# 删除 Hive 中冲突的日志包
rm -rf $HIVE_HOME/lib/log4j-slf4j-impl-2.17.1.jar

第四步:修改 Hive 核心配置文件

  1. 新建 / 修改 hive-site.xml(核心配置)
nano $HIVE_HOME/conf/hive-site.xml

清空原有内容,粘贴以下配置(适配 Hadoop 3.3.4 + node1 主机名):
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- 1. 指定 Hive 数据仓库在 HDFS 的元数据的存储路径 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <!-- 2. 指定 Hive 临时文件路径 -->
    <property>
        <name>hive.exec.scratchdir</name>
        <value>/tmp/hive</value>
    </property>
    <!-- 3. 指定 HDFS 地址(和 Hadoop core-site.xml 一致) -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
    </property>
    <!-- 4. 元数据存储方式:本地 Derby(新手推荐,无需额外安装数据库) -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=/usr/local/apache-hive-3.1.3-bin/metastore_db;create=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    </property>
    <!-- 5. 关闭元数据存储授权(新手友好) -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive</value>
    </property>
    <!-- 6. 关闭 Hive 权限检查(新手友好) -->
    <property>
        <name>hive.security.authorization.enabled</name>
        <value>false</value>
    </property>
    <!-- 7. 开启 Hive CLI 交互模式(解决启动警告) -->
    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>
    <!-- 8. 适配 Hadoop 3.x 版本(关键) -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>

2. 修改 hive-env.sh(指定 Hadoop 路径)

# 复制模板文件
cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh
# 编辑配置
nano $HIVE_HOME/conf/hive-env.sh

在文件末尾添加:
# 指定 Hadoop 安装路径
export HADOOP_HOME=/usr/local/hadoop-3.3.4
# 指定 Hive 配置文件路径
export HIVE_CONF_DIR=/usr/local/apache-hive-3.1.3-bin/conf
# 指定 JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

第五步:初始化 Hive 元数据(仅首次执行)

【Hive 安装时,要在HDFS上创建Hive 所需目录,需要 HDFS 在线】

# 在 HDFS 上创建 Hive 所需目录(存储元数据、临时文件):
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
# 修改目录权限(避免读写报错)
hdfs dfs -chmod 777 /user/hive/warehouse
hdfs dfs -chmod 777 /tmp/hive
报的一个警告:util.NativeCodeLoader工具类加载失败
【这个类加载失败, “原生库就用不了”】
【原生库能用就用,不能用就自动切换到纯 Java 实现】

image.png

初始化元数据(Derby 模式)

schematool -initSchema -dbType derby

#报警告:

  • (schematool 是为 MySQL/PostgreSQL 等主流数据库设计的,对 Derby 的兼容性不好,最后一步检查失败了,但不影响 Hive 运行)【为了兼容,可以Derby换成MYSQL】
  • 【MySQL/PostgreSQL 场景: Hive 会在元数据库中创建一个名为 HIVE 的独立 Schema(相当于「数据库下的子命名空间」),所有元数据表都放在这个 Schema 下,所以 schematool 检查 HIVE Schema 能找到,校验通过。】
  • 【Derby 场景: Derby 是轻量级嵌入式数据库,没有「独立 Schema」的概念 —— 它只有「用户」的概念,默认把所有表创建在内置的 APP 用户下,而非 HIVE Schema。但 schematool 不管数据库类型,一律执行 SELECT * FROM "HIVE"."VERSION" 检查,自然找不到,就抛出「Schema 'HIVE' does not exist」的误报。】 image.png

第六步:启动 Hive 并验证

# 启动 Hive CLI(命令行交互)
hive

验证操作(在 Hive CLI 中执行):
-- 1. 创建测试数据库
create database test_db;

-- 2. 查看数据库列表
show databases;

-- 3. 使用测试数据库
use test_db;

-- 4. 创建测试表
create table test_table (id int, name string);

-- 5. 插入测试数据
insert into test_table values (1, 'hive_test');

-- 6. 查询数据(能查到结果说明配置成功)
select * from test_table;

退出 Hive CLI:
exit;

第七步:验证 Hive 数据存储在 HDFS

  • 回到 Hadoop Web 界面(http://node1:9870),
  • 点击 Utilities → Browse the file system,进入 /user/hive/warehouse/test_db.db/test_table,
  • 能看到插入数据的文件,说明 Hive 与 HDFS 连通正常。