Hive及其架构简介

什么是 Hive ?

  • 一个基于 Hadoop 的数据仓库,适用于一些高延迟性的应用(离线开发),可以将存储在 Hadoop 文件中的结构化、半结构化数据文件映射为一张数据库表,并基于表提供类似 SQL 的查询模型,称为 Hive 查询语言(HQL),用于访问和分析存储在 Hadoop 文件中的大型数据集;
  • Hive 的核心是将 HQL 转换为 MapReduce 程序,然后将程序提交到 Hadoop 集群执行;
  • Hive 本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表是纯逻辑表;

什么是数据仓库?

  • 数据仓库本身并不“生产“任何数据,其数据来源于不同外部系统;
  • 同时数据仓库自身也不需要”消费“任何的数据,其结果开放给各个外部应用使用;
  • 这就是为什么叫”仓库“,而不叫”工厂的原因“;

Hive 架构及组件

在这里插入图片描述

  • Meta store:通常存储在关系型数据库如 Mysql / derby 中,Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否是外部表等),表的数据所在目录等;
  • Driver:驱动程序,包括语法解析器、计划编译器、优化器、执行器。完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行;
    • 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST ,对 AST 进行语法分析,比如 SQL 语义是否正确、表是否存在、字段是否存在;
    • 编译器(Physical Plan):将 AST 编译生成逻辑执行计划(DAG);
    • 优化器(Query Optimizer):对逻辑执行计划进行优化;
    • 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划,就是 MapReduce / Spark 程序;

HQL 执行流程

在这里插入图片描述

  1. 发起请求: 从UI发起执行请求到Driver;
  2. 获取执行计划: Driver将用户请求发送到编译器获取执行计划;
  3. 获取元数据: 编译器根据 SQL 语句中相关表和分区信息从 Meta store 获取相关元数据;
  4. 返回元数据: Meta store 向编译器返回对应元数据;
  5. 返回执行计划: 根据表和分区的元数据对 SQL 解析和优化,生成逻辑执行计划。该计划是一个 DAG 图,每个 stage 对应一个 MapReduce 的 map 或者 reduce 操作;
  6. 运行执行计划: 将执行计划发送到 Execution Engine,执行引擎会将逻辑执行计划提交到 Hadoop 中以 MapReduce 形式进行执行;
  7. 运行结果获取: Driver将运行结果收集发送给UI;
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值