Hive安装部署
目录
Metastore部署模式
内嵌模式
本地模式
远程模式
Hive远程部署模式安装部署
一、环境说明
二、Hadoop集群配置
三、安装配置MySQL
四、安装Hive
五、启动并验证Hive
Metastore部署模式
Hive Metastore存储所有表结构、分区信息等元数据。它的部署模式直接影响Hive的可用性、性能和扩展性。
内嵌模式
最简单的部署方式,适合学习和测试环境。
+-------------------------------------------------+
|                 Hive服务进程                     |
|  +-------------------+ +---------------------+  |
|  |   Hive组件        | |   Derby数据库       |  |
|  | (Driver, Compiler)| | (内嵌在同一个JVM中) |  |
|  +-------------------+ +---------------------+  |
+-------------------------------------------------+特点:
①使用内嵌的Derby数据库,只能单用户访问,不支持并发,所以不适合生产环境②Metastore和Derby在同一个JVM进程中,元数据与服务耦合导致数据不易迁移
③无需额外配置,开箱即用
本地模式
+-------------------------------------------------+
|                 Hive服务进程                     |
|  +-------------------+                          |
|  |   Metastore       | ---> 外部数据库(MySQL)   |
|  | (在Hive进程内)    |      (独立进程)          |
|  +-------------------+                          |
+-------------------------------------------------+↓Hive客户端连接特点
①使用外部数据库
②Metastore在Hive进程内,通过JDBC连接外部数据库,比内嵌性能好
③每个Hive服务都需要连接数据库,容易单点故障和扩展瓶颈
远程模式
生产环境推荐模式。Metastore作为独立服务运行,多个Hive服务共享一个Metastore。
               +-------------------+|   Metastore服务    | ---> 外部数据库(MySQL)|   (独立进程)       |      (独立进程)+-------------------+↑+------------+------------+↓                         ↓
+----------------+          +----------------+
|  Hive服务1     |          |  Hive服务2     |
| (HiveServer2)  |          | (HiveServer2)  |
+----------------+          +----------------+↓                         ↓
+----------------+          +----------------+
|  客户端1       |          |  客户端2       |
+----------------+          +----------------+特点
①使用外部数据库,数据库连接信息集中管理,安全。
②Hive服务通过Thrift网络协议连接独立的Metastore服务。所有Hive服务共享一份元数据,便于集中管理;可以部署多个Metastore可实现HA;支持大量Hive客户端,扩展性好。
③部署复杂
Hive远程部署模式安装部署
一、环境说明
操作系统:Ubantu22.04(所有节点)
 Hadoop 版本:3.4.1(已部署 3 节点集群:node1(NameNode)、node2(ResourceManager)、node3(DataNode),可参考 Hadoop 集群部署教程)
 Hive 版本:3.1.3(与 Hadoop 3.x 兼容)
 JDK 版本:1.8(所有节点需统一)
 元数据库:MySQL 8.0(部署在 node1)
 节点规划:Hive 仅需在主节点(node1) 安装(客户端可在其他节点部署)
二、Hadoop集群配置
①配置HDFS权限,允许Hive读写。修改hadoop/etc/hadoop/hdfs-site.xml,所有节点同步:
<property><name>dfs.permissions.enabled</name><value>false</value>  <!-- 关闭权限检查,避免Hive读写HDFS时权限不足 -->
</property>②配置YARN资源,Hive 任务需 YARN 分配资源,根据虚拟机内存修改yarn-site.xml(所有节点同步)
<!-- 配置容器最小/最大内存(根据服务器内存调整,示例为4G内存节点) -->
<property><name>yarn.scheduler.minimum-allocation-mb</name><value>1024</value>  <!-- 容器最小内存1G -->
</property>
<property><name>yarn.scheduler.maximum-allocation-mb</name><value>2048</value>  <!-- 容器最大内存2G -->
</property>
<!-- NodeManager可用内存(建议为服务器内存的80%) -->
<property><name>yarn.nodemanager.resource.memory-mb</name><value>2048</value>
</property>
<!-- 开启日志聚合(方便查看Hive任务日志) -->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property>③重启Hadoop集群,在主节点执行
# 停止集群
stop-all.sh
# 启动集群
start-all.sh
三、安装配置MySQL
①安装MySQL
Ubantu安装MySQL8.0
跟着上面的链接更直观,或者跟着下面代码来:
# 安装MySQL源
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
rpm -ivh mysql80-community-release-el7-7.noarch.rpm# 安装MySQL
yum install -y mysql-server# 启动MySQL并设置开机自启
systemctl start mysqld
systemctl enable mysqld# 查看初始密码
grep "password" /var/log/mysqld.log
# 示例输出:A temporary password is generated for root@localhost: xxxxxxxx# 登录MySQL并修改密码(需符合复杂度:大小写+数字+符号)
mysql -u root -p
Enter password: (输入初始密码)# 修改密码策略(可选,简化密码)
set global validate_password.policy=0;
set global validate_password.length=6;# 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';# 允许远程连接(Hive可能在其他节点访问MySQL)
create user 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;# 创建Hive元数据库(编码为latin1,避免中文乱码)
create database hive_metastore character set latin1;
exit;②下载MySQL JDBC驱动,Hive 需通过 JDBC 连接 MySQL,下载对应版本的驱动(MySQL 8.0 对应驱动 8.x)
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.29/mysql-connector-java-8.0.29.jar
四、安装Hive
①安装并解压Hive
# 下载Hive 3.13,华为镜像下载快:https://repo.huaweicloud.com/apache/hive/# 也可以用wget,慢一点就是
wget https://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz# 解压到/usr/local/目录
tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/# 重命名为hive
mv /usr/local/apache-hive-3.1.3-bin /usr/local/hive
②配置环境变量,编辑/etc/profile
vim /etc/profile
# 添加以下内容
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin# 生效环境变量
source /etc/profile③修改Hive配置文件
- 重命名模板文件
# 进入配置目录
cd /usr/local/hive/conf# 重命名模板文件
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties- 配置 hive-env.sh,用于指定Hadoop安装路径
sudo vim hive-env.sh
# 添加以下内容
export HADOOP_HOME=/usr/local/hadoop  # 你的Hadoop安装路径
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib- 配置hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 元数据库连接信息 --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://node1:3306/hive_metastore?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true</value>  <!-- 注意& --></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value>  <!-- MySQL用户名 --></property><property><name>javax.jdo.option.ConnectionPassword</name><value>@Ldryd1816</value>  <!-- 你设置的用户的密码 --></property><!-- HDFS工作目录,会自动创建 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value>  <!-- HDFS路径,存储表数据 --></property><property><name>hive.exec.scratchdir</name><value>/tmp/hive</value></property><!-- 关闭元数据存储授权检查(测试环境) --><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><!-- 配置HiveServer2的主机和端口(可选,用于JDBC连接) --><property><name>hive.server2.thrift.bind.host</name><value>node1</value>  <!-- 绑定到当前节点的主机名或IP --></property><property><name>hive.server2.thrift.port</name><value>10000</value>  <!-- 默认端口,可自定义 --></property></configuration>- 修改临时目录权限,避免启动报错
# 在Linux本地创建Hive日志目录
mkdir -p /usr/local/hive/tmp
chmod 777 /usr/local/hive/tmp# 在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④将之前下载的MySQL驱动复制到Hive的lib目录
cp mysql-connector-java-8.0.29.jar /usr/local/hive/lib/⑤初始化Hive元数据库
cd /usr/local/hive/bin
schematool -initSchema -dbType mysql -verbose#若出现schemaTool completed,说明初始化成功五、启动并验证Hive
①启动Hive(CLI模式)
# 直接输入hive命令启动客户端
hive# 成功启动后进入Hive交互界面,提示符为hive>
hive> show databases;  # 查看默认数据库(初始有default库)
hive> create database test;  # 创建测试数据库
hive> use test;  # 切换到test库
hive> create table student(id int, name string) row format delimited fields terminated by ',';  # 创建表
hive> show tables;  # 查看表(应显示student)
hive> quit;  # 退出②验证HDFS数据存储
hdfs dfs -ls /user/hive/warehouse/test.db/student  
# test.db是数据库目录,student是表目录# 也可以登录web端查看③启动HiveServer2(支持JDBC连接)
# 后台启动HiveServer2
nohup hive --service hiveserver2 > /usr/local/hive/logs/hiveserver2.log 2>&1 &# 查看是否启动(端口10000)
netstat -nltp | grep 10000  # 若显示LISTEN,说明启动成功# 使用beeline客户端连接HiveServer2(推荐)
beeline -u jdbc:hive2://node1:10000 -n root  # -n指定Linux用户名(测试环境用root)
# 连接成功后提示符为0: jdbc:hive2://node1:10000>,可执行HQL
0: jdbc:hive2://node1:10000> show databases;