数据仓库工具之Hive的架构原理

简介: 数据仓库工具之Hive的架构原理

1. Hive的本质


Hive是基于Hadoop的一个数据仓库工具,它的本质是将HQL语句转化成MapReduce程序.在它的底层,HDFS负责存储数据,YARN负责进行资源管理,MapReduce负责数据处理.

2.Hive架构


网络异常,图片无法展示
|


image.png


架构组成:


(1) 用户接口(Client):

ClientCLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)


(2) 元数据(Metastore):

Metastore元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;默认存储在自带的derby数据库中,推荐使用采用关系型数据库MySQL存储Metastore;


(3) 驱动器(Driver)包含:解析器、编译器、优化器、执行器;
  • 解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是否有出现);
  • 编译器:将抽象语法树AST编译生成逻辑执行计划;
  • 优化器:对逻辑执行计划进行优化;
  • 执行器:把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark.


(4) Hive使用HDFS存储数据.

Hive本身不存在数据,Hive虽有表的定义但表是纯的逻辑表,数据是存在HDFS上的.HIVE中的内容不支持改写和删除,适合读多写少的场景.


3.Hive执行流程


如上图所示,我们通过Hive提供的一系列交互接口(Client),向Hive提交SQL指令(HSQL).如果我们提交的是创建表的DDL语句(数据定义语言),Hive会通过使用自己的执行引擎(Driver)将数据表的信息记录在Metastore元数据组件中,正如上面提到的,元数据组件通常用一个关系型数据库实现,其记录着表名,字段名,字段类型以及关联的HDFS文件路径等元信息.


如果我们提交的是DQL语句(数据查询分析语句),Hive的执行引擎(Drive)会结合元数据信息对该语句进行转换,语法分析,语法优化等操作,最后生成一个MapReduce执行计划.

说具体一点,就是Hive执行引擎(Drive)会将该语句提交给自己的解析器(SQL Parser),解析器接收到语句之后,会将SQL查询字符串转换成抽象语法树,并对抽象语法树进行语法分析,比如检测表是否存在,字段是否存在,SQL语义是否有误等,之后将经过语法分析后的抽象语法树提交给编译器.


编译器再将抽象语法树编程成逻辑执行计划(Physical Plan),然后再由优化器(Query Optimizer)对逻辑执行计划进行优化,最后由执行器(Execution)将逻辑执行计划转换成可以运行的物理计划,也即是MapReduce执行计划,然后再根据执行计划生成一个MapReduce的作业,提交到Yarn上执行,最后,将执行返回的结果输出到用户交互接口.

Hive内部预置了很多函数,Hive的执行计划就是根据用户提交的HQL语句生成这些函数的DAG(有向无环图),然后封装进MapReduce的map和reduce函数中.

相关文章
|
11月前
|
SQL 分布式计算 大数据
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
本文深入介绍 Hive 与大数据融合构建强大数据仓库的实战指南。涵盖 Hive 简介、优势、安装配置、数据处理、性能优化及安全管理等内容,并通过互联网广告和物流行业案例分析,展示其实际应用。具有专业性、可操作性和参考价值。
大数据新视界 --大数据大厂之Hive与大数据融合:构建强大数据仓库实战指南
|
存储 分布式计算 大数据
数据仓库与数据湖在大数据架构中的角色与应用
在大数据时代,数据仓库和数据湖分别以结构化数据管理和原始数据存储见长,共同助力企业数据分析。数据仓库通过ETL处理支持OLAP查询,适用于历史分析、BI报表和预测分析;而数据湖则存储多样化的原始数据,便于数据探索和实验。随着技术发展,湖仓一体成为趋势,融合两者的优点,如Delta Lake和Hudi,实现数据全生命周期管理。企业应根据自身需求选择合适的数据架构,以释放数据潜力。【6月更文挑战第12天】
688 5
|
SQL 分布式计算 数据库
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
【YashanDB 知识库】Hive 命令工具 insert 崖山数据库报错
|
SQL 分布式计算 数据库
【YashanDB知识库】Hive 命令工具insert崖山数据库报错
【YashanDB知识库】Hive 命令工具insert崖山数据库报错
|
SQL 存储 分布式计算
了解Hive 工作原理:Hive 是如何工作的?
Apache Hive 是一个建立在 Hadoop 之上的分布式数据仓库系统,提供类 SQL 查询语言 HiveQL,便于用户进行大规模数据分析。Hive Metastore(HMS)是其关键组件,用于存储表和分区的元数据。Hive 将 SQL 查询转换为 MapReduce 任务执行,适合处理 PB 级数据,但查询效率较低,不适合实时分析。优点包括易于使用、可扩展性强;缺点则在于表达能力有限和不支持实时查询。
627 3
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
425 3
|
消息中间件 存储 大数据
大数据-数据仓库-实时数仓架构分析
大数据-数据仓库-实时数仓架构分析
833 1
|
存储 消息中间件 Kafka
细说数据仓库分层架构
【7月更文挑战第20天】数据仓库分层架构包括缓冲层、操作数据层、明细数据层、汇总数据层和数据集市层。
|
存储 OLAP 数据库
数据仓库作业二:第2章 数据仓库原理
数据仓库作业二:第2章 数据仓库原理
|
存储 SQL 数据库
数据仓库原理(二)
数据仓库原理(二)
下一篇
开通oss服务