手把手教你从零搭建 Hive 2.3.6 + MySQL 元数据存储(含视频教程)
文章目录
- [手把手教你从零搭建 Hive 2.3.6 + MySQL 元数据存储(含视频教程)](#手把手教你从零搭建 Hive 2.3.6 + MySQL 元数据存储(含视频教程))
-
-
- [🐝 什么是 Apache Hive?](#🐝 什么是 Apache Hive?)
- 一、上传并解压安装文件
- [二、配置 Hive 环境变量](#二、配置 Hive 环境变量)
- [三、MySQL 的安装](#三、MySQL 的安装)
-
- [1. 解压 MySQL 安装包](#1. 解压 MySQL 安装包)
- [2. 安装 MySQL 包](#2. 安装 MySQL 包)
- [3. 启动 MySQL 并查看状态](#3. 启动 MySQL 并查看状态)
- [4. 获取初始密码并登录](#4. 获取初始密码并登录)
- [5. 修改 root 密码](#5. 修改 root 密码)
- [6. 授权远程访问](#6. 授权远程访问)
- 四、修改配置文件
-
- [1. 处理 Guava 版本冲突](#1. 处理 Guava 版本冲突)
- [2. 配置 `hive-env.sh`](#2. 配置
hive-env.sh) - [3. 配置 `hive-site.xml`](#3. 配置
hive-site.xml) - [4. 复制 MySQL 驱动](#4. 复制 MySQL 驱动)
- [5. 启动 Hadoop 并创建必要目录](#5. 启动 Hadoop 并创建必要目录)
- [6. 初始化 Hive 元数据库](#6. 初始化 Hive 元数据库)
- 五、基本测试
-
- [1. 验证 MySQL 中的 Hive 元数据](#1. 验证 MySQL 中的 Hive 元数据)
- [2. CLI 方式访问 Hive](#2. CLI 方式访问 Hive)
- [3. Beeline 远程访问 Hive](#3. Beeline 远程访问 Hive)
-
- [(1)配置 Hadoop 代理用户(在 `core-site.xml` 中添加)](#(1)配置 Hadoop 代理用户(在
core-site.xml中添加)) - [(2)启动 HiveServer2](#(2)启动 HiveServer2)
- [(3)使用 Beeline 连接(另开终端)](#(3)使用 Beeline 连接(另开终端))
- [(1)配置 Hadoop 代理用户(在 `core-site.xml` 中添加)](#(1)配置 Hadoop 代理用户(在
- 六、Hive搭建视频教程
-
🐝 什么是 Apache Hive?
Apache Hive 是一个基于 Hadoop 的数据仓库工具 ,最初由 Facebook 开发,后捐赠给 Apache 基金会。它允许用户使用类似 SQL 的查询语言(称为 HiveQL 或 HQL)来读取、写入和管理存储在 Hadoop 分布式文件系统(HDFS)中的大规模结构化数据集。
Hive 的核心思想是将 SQL 查询自动转换为 MapReduce、Tez 或 Spark 任务在集群上执行,从而降低大数据分析的门槛------即使不熟悉 Java 或分布式编程的分析师也能通过熟悉的 SQL 语法进行海量数据处理。
📌 典型应用场景:
- 日志分析
- 用户行为统计
- 数据仓库 ETL(抽取、转换、加载)
- 离线批处理报表生成
虽然 Hive 并非为实时查询设计(延迟通常在分钟级),但它在离线大数据分析领域仍是企业级数据平台的重要组成部分。
在本文中,我们将完成 Hive 2.3.6 的安装与部署,并将其元数据存储配置为 MySQL,实现与 Hadoop 生态的完整集成。
一、上传并解压安装文件
使用 Xftp 软件将以下三个文件上传到 /opt/software 目录下:
apache-hive-2.3.6-bin.tar.gzmysql-5.7.18-1.el7.x86_64.rpm-bundle.tarmysql-connector-java-5.1.34-bin.jar
执行以下命令解压并重命名 Hive 安装包:
bash
[root@master ~]# cd /opt/software/
[root@master software]# ls
apache-hive-2.3.6-bin.tar.gz
mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
hadoop-2.7.3.tar.gz
mysql-connector-java-5.1.34-bin.jar
jdk-8u231-linux-x64.tar.gz
# 解压到统一安装目录
[root@master software]# tar -zvxf apache-hive-2.3.6-bin.tar.gz -C /opt/module/
[root@master software]# cd /opt/module/
[root@master module]# ls
apache-hive-2.3.6-bin hadoop java
[root@master module]# mv apache-hive-2.3.6-bin/ hive/
[root@master module]# ls
hadoop hive java
说明 :以上操作仅需在 Hive 安装节点(本文为
master主节点)执行。
二、配置 Hive 环境变量
编辑 /etc/profile 文件:
bash
[root@master ~]# vi /etc/profile
在文件末尾添加以下内容:
bash
# HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$HIVE_HOME/bin:$PATH
export HIVE_CONF_DIR=$HIVE_HOME/conf
使环境变量生效:
bash
[root@master ~]# source /etc/profile
三、MySQL 的安装
1. 解压 MySQL 安装包
bash
[root@master ~]# cd /opt/software/
[root@master software]# mkdir mysql
[root@master software]# tar -vxf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar -C mysql
[root@master software]# rm -f mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
2. 安装 MySQL 包
检查并卸载已存在的 MariaDB:
bash
[root@master mysql]# rpm -qa | grep mysql
[root@master mysql]# rpm -qa | grep mariadb
[root@master mysql]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
安装 MySQL 组件:
bash
[root@master mysql]# rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
[root@master mysql]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
[root@master mysql]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
安装依赖并安装 Server:
bash
[root@master mysql]# yum -y install perl
[root@master mysql]# yum -y install net-tools
[root@master mysql]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
验证安装:
bash
[root@master mysql]# rpm -qa | grep mysql
3. 启动 MySQL 并查看状态
bash
[root@master ~]# systemctl start mysqld
[root@master ~]# systemctl status mysqld

4. 获取初始密码并登录
bash
[root@master ~]# cat /var/log/mysqld.log | grep password
# 示例输出:
# 2020-10-24T15:54:22.542871Z 1 [Note] A temporary password is generated for root@localhost: jdN&Zjcex6Wo
[root@master ~]# mysql -uroot -p
Enter password: jdN&Zjcex6Wo
5. 修改 root 密码
sql
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;
mysql> alter user 'root'@'localhost' identified by '1234';
mysql> exit;
重新登录:
bash
[root@master ~]# mysql -uroot -p1234
6. 授权远程访问
sql
mysql> grant all privileges on *.* to 'root'@'%' identified by '1234' with grant option;
mysql> flush privileges;
mysql> show databases;
mysql> exit;
四、修改配置文件
1. 处理 Guava 版本冲突
Hadoop 使用 guava-27.0-jre.jar,而 Hive 使用 guava-19.0.jar。需替换:
bash
[root@master ~]# cd /opt/module/hive/lib
[root@master lib]# rm -f guava-19.0.jar
[root@master ~]# cp /opt/module/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /opt/module/hive/lib/
2. 配置 hive-env.sh
bash
[root@master hive]# cd conf
[root@master conf]# cp hive-env.sh.template hive-env.sh
[root@master conf]# vi hive-env.sh
在文件末尾添加:
bash
export JAVA_HOME=/opt/module/java
export HADOOP_HOME=/opt/module/hadoop
export HIVE_CONF_DIR=/opt/module/hive/conf
export HIVE_AUX_JARS_PATH=/opt/module/hive/lib
3. 配置 hive-site.xml
创建并编辑 hive-site.xml:
bash
[root@master conf]# vi hive-site.xml
内容如下:
xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive_db?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>1234</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/opt/module/hive/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/module/hive/tmp/${hive.session.id}_resources</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/opt/module/hive/tmp</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/opt/module/hive/tmp/operation_logs</value>
</property>
<property>
<name>hive.server2.webui.host</name>
<value>master</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
</configuration>
说明:
javax.jdo.option.ConnectionURL:指定元数据存储在 MySQL 的hive_db数据库。- 其他路径用于临时文件、日志等。
4. 复制 MySQL 驱动
bash
[root@master conf]# cp /opt/software/mysql-connector-java-5.1.34-bin.jar /opt/module/hive/lib/
5. 启动 Hadoop 并创建必要目录
bash
[root@master conf]# start-all.sh
[root@master conf]# hdfs dfs -mkdir -p /user/hive/warehouse
[root@master conf]# hdfs dfs -rm -r /tmp
[root@master conf]# hdfs dfs -mkdir /tmp
6. 初始化 Hive 元数据库
bash
[root@master conf]# schematool -initSchema -dbType mysql

五、基本测试
1. 验证 MySQL 中的 Hive 元数据
bash
[root@master conf]# mysql -uroot -p1234
mysql> show databases;
mysql> use hive_db;
mysql> show tables;
mysql> exit;
应看到 hive_db 数据库及约 57 张元数据表。
2. CLI 方式访问 Hive
bash
[root@master conf]# hive
hive> show databases;
OK
default
Time taken: 9.547 seconds, Fetched: 1 row(s)
hive> use default;
OK
hive> show tables;
OK
hive> exit;
注意:Hive-on-MR 已弃用,建议未来使用 Spark 或 Tez 引擎。
3. Beeline 远程访问 Hive
(1)配置 Hadoop 代理用户(在 core-site.xml 中添加)
在 master、slave1、slave2 的 $HADOOP_HOME/etc/hadoop/core-site.xml 中添加:
xml
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
重启 Hadoop:
bash
[root@master ~]# stop-all.sh
[root@master ~]# start-all.sh
(2)启动 HiveServer2
bash
[root@master ~]# hiveserver2

(3)使用 Beeline 连接(另开终端)
bash
[root@master ~]# beeline
beeline> !connect jdbc:hive2://master:10000
# 用户名直接回车,无需密码(或按实际配置)


也可通过 Web UI 访问:

提示:若遇到 SLF4J 多绑定警告,可忽略或排除冲突 jar 包。
✅ 至此,Hive 安装与部署完成!
六、Hive搭建视频教程
如果大家对文章教程中的某个步骤有问题的话,我还专门给大家录制了视频教程:手把手教你从零搭建 Hive 2.3.6 + MySQL 元数据存储
希望大家也三连一下视频,你的支持是我创作的最大动力!