Hive架构和原理(图形化通俗易懂)

2022-06-16 18:33:01 浏览数 (1)

文章目录
  • 组件模块说明
  • Hive原理
  • Hive 架构
    • 用户接口: Client
    • 元数据: Metastore
    • 驱动器: Driver
  • Hive运行机制

组件模块说明

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

  1. 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、 SQL语义是否有误。
  2. 编译器(Physical Plan):将 AST 编译生成逻辑执行计划。
  3. 优化器(Query Optimizer):对逻辑执行计划进行优化。
  4. 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说, 就是 MR/Spark。

Hive运行机制

建表,通过映射关系(表和HDFS路径)向表中导数据。

查询,通过表名从Metastore中(记录 MetaStore着表对应文件的path)得到HDFS文件的路径查询对应的数据。

Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver,结合元数据(MetaStore),将这些指令翻译(经过解析器、编译器、优化器)成 MapReduce,提交到 Hadoop 中执行,最后,将执行返回的结果输出到用户交互接口。

0 人点赞