hive的结构
hive执行流程
Hive 的核心驱动 Driver
(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
(2) 编译器:编译器是将语法树编译为逻辑执行计划
(3) 优化器:优化器是将逻辑执行计划优化为更优逻辑计划
(4) 执行器:执行器是将逻辑计划切成对应引擎的可执行物理计划
执行流程简述
- 1、客户端将查询的SQL发送给Driver以执行。
- 2、在 Driver 中经过解释器将 hql 语句解析成抽象语法树 AST,比对 metaStore 中存储的元数据进行语法分析和校验,比如表存不存在、字段对不对等。
- 3、经过编译器将抽象语法树转化为一个逻辑计划 (存储在 hdfs 中)。
- 4、经过优化器对该逻辑计划进行优化, 更新为最优逻辑计划。
- 5、经过执行器将逻辑计划切成对应引擎 mr 的可执行物理计划,生成 MapReduce 任务并通过物理优化器优化后,运行在 hadoop 集群上,在内部,执行任务的过程是MapReduce Job。执行引擎将Job发送到ResourceManager,ResourceManager位于Name节点中,并将job分配给datanode中的NodeManager。在这里,查询执行MapReduce任务。在执行的同时,执行引擎可以使用Metastore执行元数据操作。
- 执行引擎将从datanode上获取结果集,并将这些结果值发送给Driver,Driver将结果发送到客户端。