作者:更东陌飞絮蒙蒙 | 来源:互联网 | 2023-09-14 11:08
1. hive的介绍
什么是hive:Hive是基于hadoop的一个数据仓库工具,实质就是一款基于hdfs的MapReduce计算框架,对存储在HDFS中的数据进行分析和管理。
hive的工作方式:把存放在hive中的数据都抽象成一张二维表格,提供了一个类似于sql语句的操作方式,这些sql语句最终被hive的底层翻译成为MapReduce程序,最终在hadoop集群上运行,结果也会输出在hdfs之中。(必须是结构化的数据)。在存储的时候hive对数据不做校验,在读取的时候校验。
hive的的优点:极大的简化了分布式的计算程序的编程。使不会分布式编程的,其他工作人员都可以进行海量数据的统计分析。
hive的的缺点(3点):
延迟高,事务,增删改
不支持行级别的增删改操作
hive的查询延迟很严重
hive中不支持事务,主要用于做OLAP(联机分析处理)。
hive的的适用场景:hive数据仓库中的数据,主要是存储,在进行ETL(数据清洗、抽取、转换、装载)操作之后的具有结构化的数据。但是数据的存储的格式没有特殊要求,可以使普通文件,也可以是溢写压缩文件等等。
hive的的与关系型数据库的对比:
2. hive的架构
hive的基础理论
hive的架构中有四个部分组成:
用户接口层:
-
CLI(command line interface),shell终端命令行,采用交互式使用hive命令行与hive进行交互,最常用(学习、生成、调试)
-
Jdbc/odbc:是hive的基于jdbc操作提供的客户端,用户(开发、运维)通过这个链接hive server服务
-
Web UI:通过浏览器访问hive(基本不用)
Thrift Server:语言服务:Thrift是facebook开发的一个软件框架,可以用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。
Driver:底层组件:底层的四大组件完成hql查询语句从词法分析,语法分析,编译,优化,以及生成逻辑执行计划的生成。生成的逻辑执行计划存储在hdfs中,并随后由MapReduce调用执行。
解释器:解释器的作用是将hiveSQL语句转换成抽象语法数
编译器:编译器是将语法树编译成为逻辑执行计划
优化器:优化器是对逻辑执行计划进行优化
执行器:执行时调用底层的运行框架执行逻辑执行计划
执行流程就是:hiveQL,通过命令或者客户端提交,经过compiler编译器,运用metastore中的元数据进行类型检测和语法分析,生成一个逻辑方案,然后通过的优化处理,产生一个maptask程序。
元数据库 :就是存储在hive中的数据的描述信息,通常包括:表的名字、表的列和分区以及其属性、表的属性(内部表和外部表),表的数据所在目录。
而hive有两种元数据的存储方案:
Metastore默认存储在自带的derby数据库中。缺点是:不适合多用户操作,并且数据存储目录不固定。数据库跟着hive的进入目录走,极度不方便管理。
Hive和mysql之间通过Metastore服务交互(本地或者远程)
3. hive的数据存储
hive的存储特点:
- hive中所有的数据都存储在hdfs中,没有专门的数据存储格式,因为hive是读模式,可支持TezxtFile、SequenceFile(序列化)RCFile(行列结合)或者自定义格式等
- 只需要在创建表的时候,告诉hive数据中的列分隔符和行分隔符,hive就可以解析数据,默认的列分隔符是:(Ctrl + a 不可见字符: \x01),行分隔符是:(\n 换行符)
hive的存储结构: hive的存储结构:数据库、表、视图、分区和表数据等。数据库、表、视图、分区等等都对应hdfs上的一个目录,表数据对应hdfs对应目录下的文件。
例:
Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/student.txt
Hdfs://Hadoop01/user/hive/warehouse:表示hive的数据仓库
Hdfs://Hadoop01/user/hive/warehouse/myhive.db: hive的一个数据库
Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student hive中的一个表
Hdfs://Hadoop01/user/hive/warehouse/myhive.db/student/student.txt 数据文件
注意:当我们在创建表的时候,首先会在hdfs上的相应的目录下生成一个文件,同时在hive的元数据库中会为这个新建的表生成一条记录。
hive具体的存储结构:
-
数据仓库:在 HDFS 中表现为${hive.metastore.warehouse.dir}目录下一个文件夹
-
表:hive的表分为内部表、外部表、分区表、分桶表,表在hdfs中的表现形式也是目录,但是不同的表之间的表现形式不同
-
视图:物化,hive是不会进行物化,相当于给一个sql语句建立了一个快捷方式,保存的是一个视图中的sql语句。只读,基于基表创建。
-
数据文件 :表中的真实数据