Hive介绍
简单说:Hive是基于hadoop的一个数据仓库工具,将结构化数据文件映射为一张表,提供类SQL查询功能(HQL)
Hive 是建立在 Hadoop 基础之上,Hadoop是一种开源框架,可被用于高效存储与处理大型数据集。因此,Hive 与 Hadoop 紧密联系,其设计可快速对 PB 级数据进行操作。
也就是要想安装Hive前提必须提前安装好hadoop集群,jdk
Hive本质
- Hive就是将HQL转换为MapReduce程序(此处Hive处理引擎为MapReduce,后续可以换成Spark等等其他计算引擎)
- Hive表的数据存储在Hdfs中
- Hive的元数据metastore我们一般存储在Mysql中
- 执行的任务运行在Yarn上
Hive架构
-
用户接口(CLI,jdbc/odbc)
CLI:命令行接口,直接在客户端编写HQL
JDBC/odbc:卡其HiveServe2,利用远程客户端工具连接进行 编写HQL语句 -
元数据:Metastore
也就是数据的表名,表的字段名、类型等,以及表数据所属的目录,执行HQL语句时先访问元数据找到存储数据的位置,然后再去对应的HDFS文件目录里查找数据。 -
Driver
(1)解析器:将SQL字符串转换成抽象语法树(AST)
(2)语义分析:将AST进一步划分为QeuryBlock
(3)逻辑计划生成器:将语法树生成逻辑计划
(4)逻辑优化器:对逻辑计划进行优化
(5)物理计划生成器:根据优化后的逻辑计划生成物理计划
(6)物理优化器:对物理计划进行优化
(7)执行器:执行该计划,得到查询结果并返回给客户端 -
Hadoop
利用hadoop的组件之一Hdfs进行存储,利用Hadoop的MapReduce组件进行计算,也可以利用Spark进行计算处理