当前位置: 首页 > news >正文

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&amp;useSSL=false&amp;serverTimezone=UTC&amp;allowPublicKeyRetrieval=true</value>  <!-- 注意&amp; --></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;

http://www.dtcms.com/a/542366.html

相关文章:

  • 初始网络通信
  • 从MSF载荷生成到Windows防火墙绕过
  • 成品网站设计网站网站设计优缺点
  • 广州建设工程交易中心网站软件定制网站优化 seo一站式
  • orchestrator Web API
  • 营销型网站免费企业网站模版单页网站seo如何优化
  • MySQL之慢查询sql排查及优化
  • 如何实现企业网站推广的系统性哪家公司做跳转网站
  • Redis Cluster集群理论
  • 广州网站开发定制设计北京做网站的大公司
  • 求个网站你会感谢我的西安大雁塔高多少米
  • 59网站一起做网店电商详情页设计思路
  • 网站建设预算表样本wordpress 上一篇 下一篇
  • 江西 网站 建设 开发永辉企业微信app下载安装
  • 提升学历是什么意思百度地图优化
  • 竹子林网站建设php网站开发实践指南
  • 【测试理论和实践 4.测试用例】
  • Java—接口
  • 移动网站源码兰州需要做推广的公司
  • 公司架设网站费用怎么做分录自学it怎么入门
  • 不用代码做网站杭州品牌网站设计
  • 商城建站模板广州从化建设网站官网
  • 免费的游戏网站建设建网站软件工具
  • Spring Boot3零基础教程,SpringSecurity 测试,笔记81
  • 哪里有网站推广优化wordpress获取自定类型
  • wordpress读取mysql北京百度搜索优化
  • IntelliJ IDEA 常用快捷键
  • 枣阳网站建设 枣阳山水数码wordpress文章什么时候收录
  • 代码随想录day20:406.根据身高重建队列
  • Redis之IO多路复用 select,poll,epoll