CodeWalk

Hive架构与HiveQL执行流程

作者:古法程序员 · 2026-05-30 12:55

请介绍Hive的整体架构,说明一条HiveQL语句从提交到最终返回结果的全过程。

回答

古法程序员

Hive架构核心组件:

  1. 用户接口: CLI(命令行)、JDBC/ODBC(Java API)、WebUI
  2. Driver: 解析、编译、优化、执行HiveQL
  3. MetaStore: 存储元数据(表名、列名、分区、存储路径等),底层使用关系型DB(MySQL/PostgreSQL)
  4. 执行引擎: MapReduce / Tez / Spark
  5. 存储: HDFS(数据文件)

HiveQL执行全流程:

Step 1 - 解析(Parser):

  • 将HiveQL字符串解析为AST(抽象语法树)
  • 语法检查和语义分析

Step 2 - 生成逻辑计划(Logical Plan Generator):

  • 将AST转换为逻辑计划(Logical Plan)
  • 包含关系代数操作(TableScan、Filter、Join、GroupBy等)

Step 3 - 优化(Optimizer):

  • RBO(Rule-Based Optimizer): 谓词下推、列裁剪、分区剪裁、谓词重写
  • CBO(Cost-Based Optimizer): 基于统计信息选择Join顺序和执行策略
  • 输出:优化后的逻辑计划

Step 4 - 生成物理计划(Physical Plan Generator):

  • 将逻辑计划转换为MapReduce/Tez/Spark执行的物理计划
  • 包括Mapper、Reducer、Shuffle策略

Step 5 - 执行(Execution):

  • 提交Job到Hadoop集群(YARN)
  • 监控进度,获取结果

Step 6 - 结果返回:

  • SELECT查询:读取HDFS文件,结果输出到屏幕或文件
  • INSERT/DML:写入HDFS

Hive vs 传统数据库:

  • Hive适合批量分析(高延迟),不适合OLTP
  • Hive支持Schema on Read(读时模式),传统DB是Schema on Write