> 文章列表 > Hive了解

Hive了解

Hive了解

目录

1.1 什么是Hive

1.2 Hive发展历程

1.3 Hive架构原理


1.1 什么是Hive

1Hive简介

Hive是由Facebook开源,基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供SQL查询功能。

那为什么会有Hive呢?它是为了解决什么问题而诞生的呢?

下面通过一个案例,来快速了解一下Hive。

例如:需求,统计单词出现个数。

(1)在Hadoop课程中我们用MapReduce程序实现的,当时需要写Mapper、Reducer和Driver三个类,并实现对应逻辑,相对繁琐。

test表
id列atguigu
atguigu
ss
ss
jiao
banzhang
xue
hadoop

(2)如果通过Hive SQL实现,一行就搞定了,简单方便,容易理解。

select count(*) from test group by id;

2Hive本质

Hive是一个Hadoop客户端,用于HQLHive SQL转化成MapReduce程序

(1)Hive中每张表的数据存储在HDFS

(2)Hive分析数据底层的实现是MapReduce(也可配置为Spark或者Tez)

(3)执行程序运行在Yarn上

1.2 Hive发展历程

时间 发展历程
2008年 Apache Hive项目由Facebook开源,作为Hadoop生态系统的一部分。
2010年 Hive成为Apache软件基金会的顶级项目,吸引了越来越多的社区参与和贡献。
2012年 Hive 0.9版本发布,引入了Hive Server 2,提供了一个独立的Hive服务器,支持多客户端并发连接。
2013年 Hive 0.12版本发布,引入了Hive on Tez引擎,提供了更快的查询性能和更低的延迟。
2015年 Hive 1.0版本发布,引入了多项重要功能,包括事务支持、Vectorized Query引擎、并行DDL操作等。
2016年 Hive 2.0版本发布,引入了ACID事务支持的重大改进,包括支持INSERT、UPDATE、DELETE等事务操作。
2017年 Hive 2.3版本发布,引入了LLAP(Low Latency Analytical Processing)引擎,提供了更低的查询延迟和更高的查询性能。
2019年 Hive 3.0版本发布,引入了许多重要的改进,包括支持ACID事务表和非事务表的混合查询、支持Materialized Views、支持Bucketed Tables等。
2020年 Hive 3.1版本发布,继续改进性能和可扩展性,引入了基于预测性建议的查询优化器等。
2022年 Hive 4.0版本发布,将继续推动Hive在大数据处理领域的创新,提供更高的性能和更丰富的功能。

1.3 Hive架构原理

 

1)用户接口:Client

CLI(command-line interface)、JDBC/ODBC。

说明:JDBC和ODBC的区别。

(1)JDBC的移植性比ODBC好;(通常情况下,安装完ODBC驱动程序之后,还需要经过确定的配置才能够应用。而不相同的配置在不相同数据库服务器之间不能够通用。所以,安装一次就需要再配置一次。JDBC只需要选取适当的JDBC数据库驱动程序,就不需要额外的配置。在安装过程中,JDBC数据库驱动程序会自己完成有关的配置。)

(2)两者使用的语言不同,JDBC在Java编程时使用,ODBC一般在C/C++编程时使用。

2)元数据:Metastore

元数据包括:数据库(默认是default)、表名、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。

默认存储在自带的derby数据库中,由于derby数据库只支持单客户端访问,生产环境中为了多人开发,推荐使用MySQL存储Metastore。

3)驱动器:Driver

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

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

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

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

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

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

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

 

 

4Hadoop

使用HDFS进行存储,可以选择MapReduce/Tez/Spark进行计算。