1.概述
Hive是一款apache旗下的基于MapReduce的分布式SQL计算工具,其功能是:
- 将SQL语句翻译成MapReduce程序运行
Hive组件
- 元数据管理(Matastore服务)
- SQL解析器(Driver驱动程序)
- 用户接口
2.Hive在VMware虚拟机中部署
hive是单机运行的,只需要部署在一台服务器即可,同时,它可以提交分布式运行的MapReduce程序运行
前提准备
一台虚拟机(基于Ubuntu)
环境:jdk,hadoop,hive
规划
|--------------------------|-----------|
| 服务 | 机器 |
| Hive本体 | 部署在hadoop |
| 元数据服务所需的关系型数据库(以MySQL为例) | 部署在hadoop |
Hive部署操作
1.更新软件包版本
sudo apt update
2.安装MySQL服务器
sudo apt install mysql-server
2.1启动并设置开机自启
通常在安装完后,MySQL 服务默认会自动启动,通过以下命令检查服务的运行状态:
sudo systemctl status mysql
如果服务正在运行:

2.2运行安全脚本
该脚本会帮助你进行一些基本的安全设置,如设置 root 密码、移除匿名用户、禁止 root 远程登录等。
sudo mysql_secure_installation
执行上面命令后你会弹出如下,

这是在 Linux 系统(从用户名和命令行环境推测)中配置 MySQL 安全性的过程。当前提示询问是否要设置 "VALIDATE PASSWORD COMPONENT"(密码验证组件),用于检查密码强度并提升安全性,它只允许足够安全的密码。
如果你希望强制使用强密码策略,增强数据库安全性,可以按下 y
或 Y
键,然后按回车键确认。
如果你不希望使用该组件,比如当前环境对密码强度要求不高,或者不想立即配置密码强度检查 ,可以按下除 y
和 Y
之外的任意键,然后按回车键跳过此设置。
假如你输入y后:

这里选择密码策略级别,输入 0(代表低级别策略)、1(代表中级别策略 )或 2(代表高级别策略)
这里以输入0为例,之后弹出:

这里选择是否删除匿名用户?
默认情况下,MySQL 安装有一个匿名用户允许任何人登录 MySQL 而无需拥有为他们创建的用户帐户。该账户无用户名和密码要求,可直接登陆,但权限低,通常只用只读权限,最好选择删除
输入 n 后:

这里选择是否禁止 root 远程登录?
最好选择n,选择完后:

这里选择是否删除test数据库,test数据库是MySQL默认用于测试的数据库,这里无所谓,都可以选。
之后:

这里选择是否现在重新加载特权表?
在修改权限后情况下,选择y,其他情况选择n,这里我选择n
到这一步,所有的设置完毕。
2.3验证安装
#启动MySQL验证是否安装成功
sudo mysql -u root -p

输入虚拟机用户密码及MySQL密码(MySQL密码随便输入即可登陆)
如果你需要一个强密码,则可以输入如下命令(这里以Ubuntu为例):
#MySQL 8.0 及以上版本
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
#MySQL 5.x 版本
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');
FLUSH PRIVILEGES;
#在 MySQL 命令行中查看MySQL版本
SELECT VERSION();
#在 MySQL 命令行客户端中查看MySQL版本
\s + 回车
#在系统命令行中查看MySQL版本
mysql --version
2.4配置远程访问(可选)
默认情况下,MySQL 只允许本地访问。如果需要从远程主机访问 MySQL 服务器,需要进行一些额外的配置。
#编辑 MySQL 配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
/*找到 bind-address 这一行,将其值从 127.0.0.1 修改为服务器的实际 IP 地址
或 0.0.0.0(表示允许所有 IP 访问),保存并退出*/
#重启 MySQL 服务
sudo systemctl restart mysql
#创建允许远程访问的用户:登录到 MySQL 服务器,执行以下 SQL 命令创建一个新用户并赋予远程访问权限
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
#将 newuser 替换为你想要创建的用户名,password 替换为用户密码
3.配置hadoop
由于Hive的运行依赖于Hadoop,需要配置Hadoop的代理用户。
配置如下内容在Hadoop的core-site.xml中,并分发到其他节点,之后重启HDFS集群
#在生产环境中,建议明确指定允许的主机和用户组,以增强系统的安全性。
#这里为了避免权限问题,我们配置值为 *
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
<description>
此配置项指定了允许以 'hadoop' 用户作为代理用户发起请求的主机列表。
值为 '*' 表示允许所有主机通过 'hadoop' 用户进行代理操作;
若指定特定主机,可将 '*' 替换为主机名或 IP 地址,多个主机用逗号分隔。
</description>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
<description>
该配置项确定了允许以 'hadoop' 用户作为代理用户发起请求的用户组列表。
值为 '*' 表示允许所有用户组通过 'hadoop' 用户进行代理操作;
若指定特定用户组,可将 '*' 替换为用户组名称,多个用户组用逗号分隔。
</description>
</property>
4.下载并解压Hive
官网下载apache-hive-4.0.0-bin.tar.gz:Index of /dist/hive
#解压到你自己想解压的指定目录
tar -zxvf <Hive解压包路径> -C <解压到哪的路径>
tar -zxvf apache-hive-4.0.0-bin.tar.gz -C /home/hadoop/export/server/
5.配置Hive环境变量
编辑 ~/.bashrc 或 /etc/profile文件,添加以下内容:
#首先,使用vim编辑器进入文件
vim ~/.bashrc 或 vim /etc/profile
#Hive环境变量,具体以你hive文件夹目录修改路径
export HIVE_HOME=/home/hadoop/export/server/apache-hive-4.0.0-bin/
export PATH=$PATH:$HIVE_HOME/bin
保存退出后输入 source ~/.bashrc 或 source /etc/profile 使环境变量立即生效
6.配置hive-env.sh文件
在Hive的conf目录,重命名hive-env.sh文件,并输入相关配置:
#重命名模板文件hive-env.sh.template
mv hive-env.sh.template hive-env.sh
export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
7.配置元数据库
登陆MySQL,创建元数据库及用户:
#创建Hive元数据库
CREATE DATABASE hive_metastore;
#创建Hive元数据库用户并授权
CREATE USER 'hive'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hive'@'localhost';
FLUSH PRIVILEGES;
8.配置hive使用MySQL作为元数据库:
MySQL_JDBC驱动下载官网:https://dev.mysql.com/downloads/connector/j/
也可以到Maven中央仓库下载:Central Repository: mysql/mysql-connector-java
Hive3.x及以上版本,使用MySQL驱动8.0及以上
Hive早期版本,使用5.1x系列
下载完后,将MySQL_JDBC驱动jar包复制或移动到 $HIVE_HOME/lib 目录
mv mysql-connector-java-8.0.11.jar /home/hadoop/export/server/apache-hive-4.0.0-bin/lib
编辑hive-site.xml文件:
在Hive的conf目录,创建hive-site.xml文件,并输入相关配置:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hivemetastore?createDatabaseIfNotExist=true</value>
<description>
指定 MySQL 数据库的连接地址,hivemetastore 是数据库名,如果不存在会自动创建
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>指定 MySQL 的 JDBC 驱动类名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>your_username</value>
<description>用户名</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>your_password</value>
<description>密码</description>
</property>
9.初始化元数据库
schematool -dbType mysql -initSchema
10.启动Hive
# 1.启动Hadoop集群
start-all.sh
# 2.启动Hive Metastore服务(可选,用于远程连接)
hive --service metastore &
# 3.启动Hive Shell
hive
11.验证配置
#在Hive Shell命令行中执行sql语句
show databases;
show tables;
#退出
!exit