Hive软件架构及关键组件解析

Hive 的软件架构是一个经典的客户端-服务端模型,核心设计理念是将 HiveQL (类 SQL 查询语言) 转换成底层的计算框架任务(如 MapReduce, Tez, Spark),并在 Hadoop 分布式文件系统 (HDFS) 上执行。它的主要目标是提供数据摘要、查询和分析能力,同时隐藏了底层分布式计算的复杂性。

以下是 Hive 的关键组件及其交互关系:

  1. 用户接口/客户端:

    • CLI: 命令行界面,最基础直接的交互方式。
    • JDBC/ODBC: 提供 Java 数据库连接和开放数据库连接标准接口,允许应用程序(如 BI 工具:Tableau, Power BI)连接 Hive。
    • Hue: 基于 Web 的图形用户界面,常用于 Hadoop 生态系统,包含 Hive 编辑器。
    • Web UI: Hive 2.x 之后提供了基础的 Web 界面(通常运行在端口 10002)来提交查询和监控作业。
    • Thrift Server: 允许不同编程语言的客户端通过 Thrift RPC 协议与 Hive 交互。
  2. Hive 驱动:

    • 这是 Hive 的核心组件,负责接收客户端提交的查询请求(HiveQL 或命令),并协调整个查询生命周期。它包含几个关键子组件:
      • 解析器: 对输入的 HiveQL 字符串进行词法分析、语法分析,生成抽象语法树
      • 语义分析器/类型检查器: 检查 AST 中的语义正确性(如表、列是否存在,数据类型是否匹配),并利用 Metastore 中的元数据进行验证。
      • 逻辑计划生成器: 将经过验证的 AST 转换成逻辑执行计划(一个由操作符树组成的 DAG - 有向无环图)。这些操作符代表关系代数操作(如 Filter, Join, Group By, Select)。
      • 优化器: 对逻辑计划应用一系列优化规则(如谓词下推、列剪裁、分区剪裁、Join 优化、MapJoin 优化等),生成更高效的优化后的逻辑计划
      • 物理计划生成器: 将优化后的逻辑计划转换成物理执行计划。这个计划指定了如何执行每个逻辑操作符,以及使用哪种计算引擎(MapReduce, Tez, Spark)。它生成一个由物理操作符组成的 DAG。
      • 执行引擎: 负责执行物理计划。它:
        • 将物理计划 DAG 提交给底层的计算框架(如 YARN 来调度 MapReduce 或 Tez 作业)。
        • 与计算框架(如 MapReduce 或 Tez)交互,监控作业执行状态。
        • 收集最终结果并返回给客户端。
      • Hive 执行引擎选项:
        • MapReduce: 传统的、最兼容但通常较慢的引擎。
        • Tez: 基于 DAG 的引擎,避免了 MapReduce 的多次读写磁盘开销,性能显著优于 MR,是 Hive 推荐的默认引擎。
        • Spark: 使用 Apache Spark 作为执行引擎,利用其内存计算和 DAG 优化能力,提供高性能,尤其适合迭代和交互式查询。
  3. 元存储:

    • 这是 Hive 的核心系统目录,存储所有 Hive 的元数据
    • 存储内容: 数据库、表、列及其类型的信息、表的分区信息、表数据所在的 HDFS 目录位置、表的存储格式(如 TextFile, ORC, Parquet)、表的属性(如 serde)、视图信息、权限信息等。
    • 重要性: 解耦了元数据与计算,使得多个 Hive 会话(甚至其他工具如 Spark SQL, Impala, Presto)可以共享同一份元数据定义。没有 Metastore,Hive 无法工作。
    • 后端存储: 通常使用关系型数据库(如 MySQL, PostgreSQL)作为 Metastore 的持久化存储。Hive 自带 Derby 数据库,但仅适用于单用户测试环境,生产环境必须使用独立的 RDBMS。
  4. Hadoop 核心:

    • Hadoop 分布式文件系统: Hive 表数据最终存储在 HDFS 上。Hive 不管理数据存储本身,而是管理数据在 HDFS 上的组织方式(目录结构)和元数据。
    • YARN: Hadoop 的资源管理和作业调度框架。当使用 MapReduce 或 Tez 作为执行引擎时,Hive 将作业提交给 YARN 来分配集群资源并执行计算任务。

数据流概览:

  1. 用户通过 CLI/JDBC/ODBC/WebUI 等接口提交 HiveQL 查询。
  2. 驱动接收查询。
  3. 解析器进行词法语法分析,生成 AST。
  4. 语义分析器结合 Metastore 中的元数据验证查询语义。
  5. 逻辑计划生成器创建逻辑执行计划。
  6. 优化器优化逻辑计划。
  7. 物理计划生成器将优化后的逻辑计划转换为特定执行引擎(MR/Tez/Spark)的物理计划。
  8. 执行引擎将物理计划提交给底层的计算框架(通过 YARN)。
  9. 计算框架(MR/Tez/Spark)在 YARN 管理下,从 HDFS 读取输入数据。
  10. 计算框架执行任务,处理数据。
  11. 计算结果写回 HDFS(对于 INSERT 等操作)或返回给执行引擎(对于 SELECT 查询)。
  12. 执行引擎将最终结果返回给用户接口/客户端。

关键架构特点:

  • Schema-on-Read: 与传统数据库的 Schema-on-Write 不同,Hive 在数据写入时不强制校验,而是在查询读取时根据 Metastore 中的元数据解释数据格式。这提供了极大的灵活性,但也要求数据格式与元数据定义匹配。
  • 计算与存储分离: Hive 专注于查询处理和计算逻辑,数据持久化存储在 HDFS 上。
  • 元数据独立: Metastore 作为独立服务存在,支持多客户端共享和高可用。
  • 执行引擎可插拔: 支持 MapReduce, Tez, Spark 等多种执行引擎,适应不同性能需求。
  • 可扩展性: 可以处理 PB 级别的数据,利用 Hadoop 集群的横向扩展能力。

演进:

  • LLAP: Hive 2.0 引入了 LLAP,它是一个长期运行的服务进程,缓存元数据和热数据在内存中,并与执行引擎紧密集成,显著提升了交互式查询的性能。
  • Hive on Spark: 更深度地集成 Spark 作为执行引擎,利用 Spark 的内存计算优势。
  • ACID 事务支持: Hive 0.14 开始支持有限的 ACID 事务(INSERT, UPDATE, DELETE),主要针对 ORC 格式的表,增强了其在数据仓库场景下的能力(如缓慢变化维处理)。

总而言之,Hive 的架构巧妙地利用 Hadoop 的存储和计算能力,通过 Metastore 管理元数据,将类 SQL 查询转换成分布式计算任务,为大数据分析提供了一个强大且熟悉的接口。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

走过冬季

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值