Hive详细讲解-概述与环境搭建

news/2025/2/1 14:46:05/

文章目录

    • 1.Hive概述
      • 1.2.Hive架构原理
      • 1.3Driver
    • 2.Hive最小化模式安装部署
    • 3.生产环境hive安装部署
    • 4.将hive的元数据存储到Mysql
    • 5.元数据库概述
    • 6.Hive服务的部署
      • 6.1HiveServer2
      • 6.2Metastore
    • 7.HiveServer2使用
      • 7.1Metastore嵌入模式配置
      • 7.2Metastore独立模式配置*
    • 8.hive常用的参数配置方式
    • 9.hive人性化配置
      • 1.客户端显示当前库和表头
      • 2.配置hive日志文件路径
      • 3.关于JVM堆内存的配置

1.Hive概述

hivehadoop一个数据仓库工具,可以将结构化数据映射为一张表,并提供SQL查询功能。

  • Hive本质

在这里插入图片描述

重点:

hive会将用户使用的sql语句转换为MR程序。

由于最终运行程序还是在yarn上,因此hive也是yarn的客户端。

1.2.Hive架构原理

在这里插入图片描述

  • Metastore指的是元数据访问接口

  • Metastore只提供元数据访问接口,不提供元数据

  • HiveServer2提供JDBC或ODBC访问接口,或用户认证相关信息

  • HiveCLI只能在安装hive的本地机器使用,命令行客户端

  • Hive组件之间交互过程

在这里插入图片描述

Driver的运行逻辑就是将用户sql语句转化为MR计算程序;

此外driver编译sql语句需要用到元数据信息

若使用是select查询语句,那么hive客户端会拉取到最终的查询语句到客户端进行展示给用户。

1.3Driver

(1)解析器(SQLParser):将SQL字符串转换成抽象语法树(AST)

(2)语义分析(Semantic Analyzer):将AST进一步划分为QeuryBlock

获取hive中的元数据信息,将其赋值给QeuryBlock

将第一个AST进一步划分为 QeuryBlock

(3)逻辑计划生成器(Logical Plan Gen):将语法树生成逻辑计划

将语法树生产单一的逻辑计划组合

(4)逻辑优化器(Logical Optimizer):对逻辑计划进行优化

(5)物理计划生成器(Physical Plan Gen):根据优化后的逻辑计划生成物理计划

(6)物理优化器(Physical Optimizer):对物理计划进行优化Map join

(7)执行器(Execution):执行该计划,得到查询结果并返回给客户端

抽象语法树AST如下所示:

在这里插入图片描述

  • 每一个token表示每一个节点

逻辑计划如下所示:

在这里插入图片描述

2.Hive最小化模式安装部署

  • 最小化模式会将数据保存在derby数据库中部署如下所示

  • 前置条件-安装hadoop集群3.1.3

在这里插入图片描述

  • 上传hive安装包,尚硅谷给的资料有

在这里插入图片描述

  • 解压到module

  • 添加环境变量

在这里插入图片描述

etc/profile.d/my_env.sh

  • 初始化元数据库默认是derby数据库
/schematool -dbType derby -initSchema
  • 初始化完成后出现metastore_db就是存储数据的文件夹

在这里插入图片描述

  • 当前hive初始化完成,能够使用的就是CLI客户端,执行命令/bin/hive

在这里插入图片描述

  • 建表

在这里插入图片描述

建表是可以指定路径的,不指定则使用默认路径

默认存储user路径

在这里插入图片描述

在这里插入图片描述

路径存储到源数据库中

若我向stu表插入数据,那么hdfs该路径下出现该数据

  • 插入一条数据进行测试

在这里插入图片描述
在这里插入图片描述

刚刚程序没有向Yarn提交任务

最小化模式部署的问题

  • hive客户端最小化模式仅允许一个derby进程使用,也就是仅允许一个窗口开启hive

hive_170">3.生产环境hive安装部署

derby数据库仅允许一个进程使用,生产环境一般将元数据使用Mysql数据库保存,这样允许多个客户端同时访问。解决了先前的问题。

  • mysql安装
    • 离线安装
    • 在线安装(集群节点可以连接外网)

将尚硅谷资料的两个包上传到hadoop102的software

在这里插入图片描述

  • 解压
tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
  • 删除centos7自带的软件包
sudo rpm -qa | grep mariadb | xargs sudo rpm -e --nodeps

在这里插入图片描述

  • 逐步安装mysql依赖
sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

在这里插入图片描述

pkgs.org

各种包下载地址

  • 启动mysql

在这里插入图片描述

  • mysql启动命令
sudo systemctl start mysqld
  • 第一次启动时查看mysql密码
sudo cat /var/log/mysqld.log | grep password

在这里插入图片描述

所有的mysql环境配置建议参考hive课程的MySQL部署

hiveMysql_253">4.将hive的元数据存储到Mysql

4.1创建metastore源数据库放到mysql中

4.2将mysql的驱动拷贝到hive下的lib目录下

4.3hive中创建配置文件

4.4初始化hive源数据库

最终使用DG进行连接

在这里插入图片描述

在这里插入图片描述

元数据元数据就是存url的表

在这里插入图片描述

不论什么数据库,建表时候都存在默认路径。
而查询语句就是查询HDFS的路径的表,那么源数据库不论使用哪个,只要默认路径存在值,select就能查出来。

5.元数据库概述

  • DBS,保存hive源数据库的信息
  • TBLS,保存hive创建表的所有信息–跟表存储的相关信息存到SDS表中

在这里插入图片描述

  • COLUMNS_v2表示存储字段相关数据

6.Hive服务的部署

6.1HiveServer2

作用为用户提供一个jdbc、odbc的接口,供用户远程访问Hive数据的功能

在这里插入图片描述

  • HiveServer2部署前置条件,必须部署到能够往yarn提交任务,能够访问HDFS集群的节点上。
  • 用户发起一个sql语句,hiveserver2接收将任务提交yarn,yarn进行MR程序将结果返回给用户

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

未启用模拟用户效果:不论你使用任何客户端提交任务,HiveServer2提交任务的user都是Hiveserver启动用户atguigu。

若开启模拟用户:提交客户端提交任务user使用当前客户端用户。

在这里插入图片描述

生产环境:推荐开启用户模拟功能,开启权限之后,才能够保证各个用户之间的权限隔离。

A操作B表

C操作D表

.

.

.

  • Hive模拟用户权限配置在hadoop的core-site.xml中

在这里插入图片描述

注:上述配置完成后不要忘记分发core-sie.xml

  • 重启集群

    stop-yarn.sh
    
    stop-dfs.sh
    
  • hive端配置hiveserver2连接的host,指定hiveserver2连接的端口号

具体配置参考Hive3.1.3教程world

在这里插入图片描述

  • hiveserver2启动在bin下且是一个监听窗口,进程名为RunJar

在这里插入图片描述

  • 查看更详细的进程信息:
jps -ml

在这里插入图片描述

  • 使用nohub将监听进程挂载到后台使用,避免我们关闭ssh窗口连接的时候进程挂断。配合nohub一起使用的还有一个&
nohub bin/hiveserver2 &
  • 进一步将日志丢进垃圾箱1>/dev/null
nohub bin/hiveserver2 1>/dev/null &
  • linux每一个进程启动之后都会打开很多文件,每一个文件都有一个文件描述符

    • 0表示标准输入
    • 1表示标准输出
    • 2表示标准错误文件
    • 若省略数字,默认标准输出
    >/dev/null	#表示标准输出 == 1>/dev/null
    
    • 若1和2去的是同一个地址,那么标准输出可以简化
    x nohub bin/hiveserver2 1>/dev/null 2>&1 &
    
    • 2>&1等价2>/dev/null,因为2和1去的地址相同。

6.2Metastore

Metastore的作用是提供Hive CLI的元数据访问接口

  • MetasTore运行模式

  • 1.嵌入式模式

在这里插入图片描述

嵌入式模式,是所有的CLI,HiveServer2直接访问Mysql元数据库

  • 2.独立模式

在这里插入图片描述

独立模式,Metastore成为一个代理,所有客户统统访问代理即可,代理来进行访问元数据库,这样的好处:这样Metastore可以作为消息队列的作用,当数据量过载,Metasotre可以很好的减缓数据库压力。

7.HiveServer2使用

  • 本案例使用DataGrip数据库管理工具连接hiveserver2

在这里插入图片描述

端口默认10000

修改name,其他密码没有设置不用填没事

7.1Metastore嵌入模式配置

在这里插入图片描述

  • 嵌入模式也就是所有客户直接和mysql交互,因此直接配置url、driver、username、passwor即可。这些参数配置在hive-site.xml,此外,详细配置 参考hive文档。

7.2Metastore独立模式配置*

  • 生产环境重点

在这里插入图片描述

  • 独立模式所有的客户配置metastore地址即可,metastore配置jdbc客户端即可。

  • Metastore服务地址配置,端口号默认9083

在这里插入图片描述

hive-site.xml中jdbc驱动信息修改为上述即可由嵌入模式转换为独立模式,

metastore节点仅需要在hive-site.xml配置jdbc即可

metastore启动命令

hive --service metastore
  • hive-site.xml同时配置了metastore地址和jdbc参数,那么优先访问MetaStore。

记忆方法:企业开发为Metastore独立模式运行

我们练习使用:嵌入模式,hadoop102为metastore,hiveserver2地址

关于离线数仓,一般使用脚本方式,非交互式使用模式,定期执行hive命令

  • 非交互式命令

太他妈熟悉了

hive -e "sql命令"

非交互式一般用在脚本中定时执行的命令,该命令执行完毕后,直接进行进程释放,不占用资源,离线数仓就是该设计。

hive -f file.sql
  • 若sql过多可以撰写sql文件,使用非交互式命令hive -f f表示file

hive_524">8.hive常用的参数配置方式

  • 默认配置

在这里插入图片描述

在这里插入图片描述

  • 命令行参数配置

仅对本次启动有效

bin/hive -hiveconf	要配置的参数=配置值

在这里插入图片描述

客户端CLI内部配置

在这里插入图片描述

hive_554">9.hive人性化配置

  • 所有配置在hive-site.xml

1.客户端显示当前库和表头

<property><name>hive.cli.print.header</name><value>true</value><description>Whether to print the names of the columns in query output.</description>
</property>
<property><name>hive.cli.print.current.db</name><value>true</value><description>Whether to include the current database in the Hive prompt.</description>
</property>

在这里插入图片描述

在这里插入图片描述

hive_583">2.配置hive日志文件路径

hive-log4j2.properties文件在conf下,原先 是template,你可以将后缀去掉再更改。

hive-log4j2.properties文件进行配置

在这里插入图片描述

默认日志文件路径存储到temp/hive启动用户名下

hive.log文件

3.关于JVM堆内存的配置

  • hive启动时默认堆内存申请256M

先将文件更名

mv hive-env.sh.template hive-env.sh

在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/1568446.html

相关文章

强化学习笔记——4策略迭代、值迭代、TD算法

基于策略迭代的贝尔曼方程和基于值迭代的贝尔曼方程&#xff0c;关系还是不太理解 首先梳理一下&#xff1a; 通过贝尔曼方程将强化学习转化为值迭代和策略迭代两种问题 求解上述两种贝尔曼方程有三种方法&#xff1a;DP&#xff08;有模型&#xff09;&#xff0c;MC&#xff…

使用ArcMap或ArcGIS Pro连接达梦数据库创建空间数据库

一、ArcMap 1、本地windows安装 32 位 DM 数据库客户端 2、覆盖dll 将 32 位 DM 数据的..\dmdbms\bin 目录中的 .dll 文件全部拷贝到 ArcGIS 的 ..\Desktop10.5\bin 目录下&#xff0c;有同名文件直接覆盖掉 3、开启达梦数据库空间扩展支持 使用管理员用户登录数据&#xff…

Mysql的主从复制及扩展功能

一、配置过程 1.配置master vim /etc/my.cnf [mysqld] datadir/data/mysql 指定数据库文件的存储位置 socket/data/mysql/mysql.sock symbolic-links0 log-binmysql-bin 启用二进制日志&#xff0c;用于记录数据库的更…

初学stm32 --- FreeRTOS移植

目录 移植前准备 1. 基础工程 2. FreeRTOS 源码 添加 FreeRTOS 文件 1. 添加 FreeRTOS 源码 2. 将文件添加到工程 3. 添加头文件路径 4. 添加 FreeRTOSConfig.h 文件 (1) FreeRTOSConfig.h 获取途径一 (2) FreeRTOSConfig.h 获取途径二 (3) FreeRTOSConfig.h 获取途径…

HTTP(1)

HTTP协议 HTTP是什么 HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的基于TCP协议的应用层协议。 常见的应用场景&#xff1a; 浏览器与服务器之间的交互&#xff08;访问网站&#xff09;手机与服务器之间的通信多个服务器之间进行通信 …

RocketMQ优势剖析-性能优化

RocketMQ在性能优化方面展现出了许多独特的优点&#xff0c;这些优势使其在高吞吐量、低延迟以及可靠性等方面具有显著的表现。以下是对RocketMQ性能优化方面的详细剖析&#xff1a; 高吞吐量 RocketMQ采用了批量发送和预读取等技术来提升消息处理速度。批量发送允许客户端将…

Microsoft Visual Studio 2022 主题修改(补充)

Microsoft Visual Studio 2022 透明背景修改这方面已经有很多佬介绍过了&#xff0c;今天闲来无事就补充几点细节。 具体的修改可以参考&#xff1a;Microsoft Visual Studio 2022 透明背景修改&#xff08;快捷方法&#xff09;_material studio怎么把背景弄成透明-CSDN博客文…

Qt事件处理:理解处理器、过滤器与事件系统

1. 事件 事件 是一个描述应用程序中、发生的某些事情的对象。 在 Qt 中&#xff0c;所有事件都继承自 QEvent &#xff0c;并且每个事件都有特定的标识符&#xff0c;如&#xff1a;Qt::MouseButtonPress 代表鼠标按下事件。 每个事件对象包含该事件的所有相关信息&#xff…