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;

相关推荐

  1. Hive架构设计

    2024-07-12 08:28:02       50 阅读
  2. Hive第一篇简介

    2024-07-12 08:28:02       28 阅读
  3. Hive 的 classpath 简介

    2024-07-12 08:28:02       19 阅读
  4. 深入解析Apache Hive架构

    2024-07-12 08:28:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 08:28:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 08:28:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 08:28:02       58 阅读
  4. Python语言-面向对象

    2024-07-12 08:28:02       69 阅读

热门阅读

  1. 针对不支持AJAX异步查询的虚拟空间做跨站点查询

    2024-07-12 08:28:02       29 阅读
  2. docker 基础命令

    2024-07-12 08:28:02       24 阅读
  3. GPT-4o在Excel的应用

    2024-07-12 08:28:02       28 阅读
  4. Apache Web安全分析与增强

    2024-07-12 08:28:02       25 阅读
  5. 网络设备常见漏洞与解决方法

    2024-07-12 08:28:02       25 阅读
  6. HiFi音频pro和普通HiFi音频

    2024-07-12 08:28:02       27 阅读
  7. jQuery 选择器

    2024-07-12 08:28:02       28 阅读
  8. Android上如何使用perfetto分析systrace

    2024-07-12 08:28:02       28 阅读
  9. Git温习

    2024-07-12 08:28:02       29 阅读
  10. 深入了解WebKit:简介及工作流程详解

    2024-07-12 08:28:02       29 阅读
  11. 学习看论文入门记录

    2024-07-12 08:28:02       121 阅读
  12. DP学习——建造者模式

    2024-07-12 08:28:02       25 阅读