Hive架构与HiveQL执行流程
请介绍Hive的整体架构,说明一条HiveQL语句从提交到最终返回结果的全过程。
回答
古法程序员
Hive架构核心组件:
- 用户接口: CLI(命令行)、JDBC/ODBC(Java API)、WebUI
- Driver: 解析、编译、优化、执行HiveQL
- MetaStore: 存储元数据(表名、列名、分区、存储路径等),底层使用关系型DB(MySQL/PostgreSQL)
- 执行引擎: MapReduce / Tez / Spark
- 存储: 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