美文网首页程序员
数据仓库工具之Hive的架构原理

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

作者: GuangHui | 来源:发表于2018-12-16 12:09 被阅读43次

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函数中.

相关文章

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

    1. Hive的本质 Hive是基于Hadoop的一个数据仓库工具,它的本质是将HQL语句转化成MapReduce...

  • Hive数据仓库之权限管理

    Hadoop/Hive自带权限控制 延续数据仓库之Hive快速入门 - 离线&实时数仓架构[https://www...

  • 数仓--Hive--面试题准备

    数仓--Hive-面试之Hive与HBase的区别数仓--Hive-面试之Hive架构原理数仓--Hive-面试之...

  • Hive学习笔记

    hive简介 解释一:Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,...

  • 大数据入门与实战-Hive

    1 Hive是什么 Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总...

  • Hive学习笔记(1)初识Hive

    Hive是一个数据仓库基础工具,在Hadoop中用来处理结构化的数据。它架构在Hadoop之上,hive底层数据存...

  • hive入门

    一、什么是 Hive ? Hive 是一个基于Hadoop 文件系统之上的数据仓库架构。它为数据仓库的管理提供了许...

  • 09.Hive介绍与环境搭建

    一. Hive架构说明 Hive是什么 Hive是一款基于Hadoop的数据仓库软件,用于处理Hadoops上的结...

  • Hive体系架构

    参考:Hive: 基于 Hadoop 的数据仓库工具hive体系结构和执行流程 1、Hive产生背景 MapRed...

  • <官网学大数据>Hive

    Hive简介 Hive是简历在Hadoop HDFS上的数据仓库基础架构 Hive可以用来进行数据提取转化加载(E...

网友评论

    本文标题:数据仓库工具之Hive的架构原理

    本文链接:https://www.haomeiwen.com/subject/urgtkqtx.html