文章目录- 组件模块说明
- Hive原理
- Hive 架构
- 用户接口: Client
- 元数据: Metastore
- 驱动器: Driver
- Hive运行机制
- 用户接口: Client
- 元数据: Metastore
- 驱动器: Driver
组件模块说明
Hive:以下内容为V3.1版本 ; Hive是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。Hive 处理的数据存储在 HDFS,分析数据底层的实现是 MapReduce,可以简单理解Hive是Hadoop的客户端,提交sql做分析。
MapReduce :MapReduce 是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和MapReduce自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。
Yarn:为一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。
Hive原理
Hive会提前将SQL语言中常用的操作(select,where,group等)用MapReduce写成很多模板。将模板封装在Hive中。
简单说就是Hive把client输入的SQL转换为Mapreduce,运行在 Yarn 上。
Hive 架构
用户接口: Client
CLI(command-line interface)命令行方式、 JDBC/ODBC(jdbc 访问 hive)、 WEBUI(浏览器访问 hive)
元数据: Metastore
元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;其实主要作用就是Hive的表和HDFS的路径做映射。
默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储Metastore。
驱动器: Driver
- 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、 SQL语义是否有误。
- 编译器(Physical Plan):将 AST 编译生成逻辑执行计划。
- 优化器(Query Optimizer):对逻辑执行计划进行优化。
- 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说, 就是 MR/Spark。
Hive运行机制
建表,通过映射关系(表和HDFS路径)向表中导数据。
查询,通过表名从Metastore中(记录 MetaStore着表对应文件的path)得到HDFS文件的路径查询对应的数据。
Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver,结合元数据(MetaStore),将这些指令翻译(经过解析器、编译器、优化器)成 MapReduce,提交到 Hadoop 中执行,最后,将执行返回的结果输出到用户交互接口。