Hive 架构及其工作原理详解

Apache Hive 是构建在 Hadoop 之上的数据仓库系统,让我们能够使用一种类似 SQL 的查询语言 HiveQL,来查询和分析存储在 HDFS 中的大规模数据集。它通过熟悉的查询语法让用户能够与结构化数据进行交互,从而抽象化了编写 MapReduce 代码的复杂性。

Apache Hive 的特性:

  • 它是专为 Hadoop 构建的数据仓库工具。
  • 能够将 HiveQL 查询转换为 MapReduce、Tez 或 Spark 作业。
  • 允许与存储在 HDFS 中的结构化数据进行交互。
  • 主要用于批处理和 ETL(提取、转换、加载)操作。

Apache Hive 架构

下图逐步展示了 Hive 与 Hadoop 协同工作时的作业执行流程。

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250802122531024575/hivearchitecture.webp">hivearchitectureHive architecture

Hive 架构由以下核心组件构成:

1. 用户界面

  • 提供了 CLI(命令行界面)、Hive Web UI、JDBC 和 ODBC 等工具,供用户提交 HiveQL 查询。
  • 接收查询请求并将其传递给 Driver 进行处理。

2. 驱动器

  • 管理 HiveQL 查询的整个生命周期。
  • 通过与编译器、优化器和执行引擎交互,来协调查询的执行。
  • 执行解析、验证和会话处理等任务。

3. 编译器

  • 将 HiveQL 语句转换为执行计划。
  • 将查询分解为 MapReduce/Tez/Spark 作业的有向无环图(DAG)。
  • 通过转换和裁剪不必要的操作来优化逻辑执行计划。

4. 元数据存储

  • 存储元数据信息(如表模式、数据类型、分区等)。
  • 通常由关系型数据库(RDBMS)支持,例如 MySQL 或 PostgreSQL。
  • 对于管理 Hive 的“读时模式”行为至关重要。

5. 执行引擎

  • 执行经过优化的查询计划。
  • 使用以下方式将逻辑任务转换为物理作业:
  • MapReduce(默认)
  • Apache Tez
  • Apache Spark
  • 与 Hadoop 交互,从 HDFS 获取并处理数据。

6. HDFS(Hadoop 分布式文件系统)

  • Hive 表所在的实际存储层。
  • 数据以 Text、ORC、Parquet、Avro 等格式存储。

Hive 的工作原理

下面让我们一步步深入了解 Hive 的工作流程:

  • 执行查询: Hive 的接口(如命令行或 Web 用户界面)将查询发送给驱动器去执行。在这个阶段,UI 会调用驱动器的执行接口,例如通过 ODBC 或 JDBC。
  • 获取计划: 驱动器为该查询设计一个会话句柄,并将查询传输给编译器以制定执行计划。换句话说,驱动器与编译器进行了交互。
  • 获取元数据: 在此阶段,编译器向数据库发送元数据请求,并从 Metastore 获取必要的元数据。
  • 发送元数据: Metastore 将元数据作为确认发送回编译器。
  • 发送计划: 编译器将生成的执行计划发送给驱动器,以便执行查询。
  • 执行计划: 执行引擎利用 MapReduce、Tez 或 Spark 来运行该计划。
  • 返回结果: 最终结果通过接口返回给用户。

支持的存储格式

Hive 支持多种存储格式:

  • Text File(文本文件)
  • Sequence File(序列文件)
  • RCFile
  • ORC
  • Parquet
  • Avro

Hive 执行引擎

Hive 主要有三种执行引擎:

  • MapReduce: 传统引擎(速度较慢但稳健可靠)。
  • Tez: 基于 DAG(有向无环图)的引擎,速度比 MapReduce 快。
  • Spark: 利用内存计算以提供更佳性能的引擎。

Hive Metastore 与 HDFS 的对比

方面

Hive Metastore

HDFS —

— 角色

存储元数据

存储实际数据 存储类型

RDBMS(MySQL, Derby 等)

分布式文件系统 存储的内容

表结构、分区信息

表的数据文件 访问者

Driver、Compiler

执行引擎
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/42599.html
点赞
0.00 平均评分 (0% 分数) - 0