一、Hive系统架构
Hive 底层执行架构
在 Hive 这一侧,总共有五个组件:
- UI:用户界面。可看作我们提交SQL语句的命令行界面。
- DRIVER:驱动程序。接收查询的组件。该组件实现了会话句柄的概念。
- COMPILER:编译器。负责将 SQL 转化为平台可执行的执行计划。对不同的查询块和查询表达式进行语义分析,并最终借助表和从 metastore 查找的分区元数据来生成执行计划.
- METASTORE:元数据库。存储 Hive 中各种表和分区的所有结构信息。
- EXECUTION ENGINE:执行引擎。负责提交 COMPILER 阶段编译好的执行计划到不同的平台上。
上图的基本流程是:
- 步骤1:UI 调用 DRIVER 的接口;
- 步骤2:DRIVER 为查询创建会话句柄,并将查询发送到 COMPILER(编译器)生成执行计划;
- 步骤3和4:编译器从元数据存储中获取本次查询所需要的元数据,该元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词修建分区;
- 步骤5:编译器生成的计划是分阶段的DAG,每个阶段要么是 map/reduce 作业,要么是一个元数据或者HDFS上的操作。将生成的计划发给 DRIVER。
- 如果是 map/reduce 作业,该计划包括 map operator trees 和一个 re