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

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

文章目录

    • 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概述

hive时 hadoop一个数据仓库工具,可以将结构化数据映射为一张表,并提供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

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部署

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

  • 重启集群

    • hadoop103关闭yarn
    stop-yarn.sh
    
    • hadoop102关闭dfs
    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

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

  • 默认配置

在这里插入图片描述

在这里插入图片描述

  • 命令行参数配置

仅对本次启动有效

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

在这里插入图片描述

客户端CLI内部配置

在这里插入图片描述

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>

在这里插入图片描述

在这里插入图片描述

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.kler.cn/a/525630.html

相关文章:

  • 【Leetcode刷题记录】166. 分数到小数
  • (一)QT的简介与环境配置WIN11
  • 16、智能驾驶域控的材料回收
  • 【MQ】RabbitMq的可靠性保证
  • C++:PTA L2-003 月饼
  • 四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)
  • 代码随想录算法训练营第三十九天-动态规划-213. 打家劫舍 II
  • Unity实现按键设置功能代码
  • 分享|通过Self-Instruct框架将语言模型与自生成指令对齐
  • 为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1
  • 【memgpt】letta 课程6:代理RAG和外部内存
  • 130周四复盘(162)研究神作
  • Qt u盘自动升级软件
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》036-案例:实现支持搜索和筛选的用户列表
  • 【某大厂一面】JDK1.8中对HashMap数据结构进行了哪些优化
  • 手撕Diffusion系列 - 第十一期 - lora微调 - 基于Stable Diffusion(代码)
  • Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException
  • 《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
  • MIMIC IV数据库中mimiciv_hosp的transfers表的careunit分析
  • Java CAS操作
  • Windows平台最新视频号内容下载工具(MP4格式一键解析)
  • Vue.js 路由守卫:前置和后置守卫
  • 安卓(android)读取手机通讯录【Android移动开发基础案例教程(第2版)黑马程序员】
  • 一文大白话讲清楚webpack进阶——9——ModuleFederation实战
  • YOLO11/ultralytics:环境搭建
  • 菜鸟之路Day11-12一一集合进阶(四)