手把手教你从零搭建 Hive 2.3.6 + MySQL 元数据存储(含视频教程)

手把手教你从零搭建 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 连接(另开终端))
    • 六、Hive搭建视频教程

🐝 什么是 Apache Hive?

Apache Hive 是一个基于 Hadoop 的数据仓库工具 ,最初由 Facebook 开发,后捐赠给 Apache 基金会。它允许用户使用类似 SQL 的查询语言(称为 HiveQLHQL)来读取、写入和管理存储在 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.gz
  • mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
  • mysql-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 中添加)

masterslave1slave2$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 访问:

http://master:10002


提示:若遇到 SLF4J 多绑定警告,可忽略或排除冲突 jar 包。


至此,Hive 安装与部署完成!

六、Hive搭建视频教程

如果大家对文章教程中的某个步骤有问题的话,我还专门给大家录制了视频教程:手把手教你从零搭建 Hive 2.3.6 + MySQL 元数据存储

希望大家也三连一下视频,你的支持是我创作的最大动力!

相关推荐
e***8907 小时前
MySQL 8.0版本JDBC驱动Jar包
数据库·mysql·jar
p***199411 小时前
MySQL——内置函数
android·数据库·mysql
橘颂TA12 小时前
【MySQL】90% 开发者都踩过的坑:数据库数据类型选错有多可怕?
数据库·mysql·算法与结构
认真的薛薛14 小时前
数据库-MHA-读写分离-redis
数据库·sql·mysql
YIN_尹15 小时前
【MySQL】数据处理的瑞士军刀——常用的内置函数(下)
android·mysql
霖霖总总15 小时前
[小技巧70]深入COUNT(*)、COUNT(1) 与 COUNT(字段):你以为的快,其实慢了
数据库·mysql
为自己_带盐17 小时前
从零开始玩转 Microsoft Agent Framework:我的 MAF 实践之旅第三篇—工作流
数据库·mysql·microsoft
Francek Chen17 小时前
【大数据存储与管理】分布式文件系统HDFS:01 分布式文件系统
大数据·hadoop·分布式·hdfs·架构