目录
原文地址:https://cwiki.apache.org/confluence/display/Hive/Design#Design-HiveArchitecture
hive的架构
如图所示,hive主要包括如下模块:
- UI
用于向系统提交查询请求的接口。
- Driver(驱动)
该组件用于接收查询请求,它实现了会话操纵句柄,并且提供了基于jdbc/odbc的执行接口。
- Compiler(编译器)
该模块用来解析请求,对不同请求模块和语句进行语法分析,最后借助元数据中的表和分区信息来生成执行计划。
- Metastore(元数据存储)
该模块用于存储表和分区的结构信息,包括列和列类型信息的数据,序列化和反序列化程序,这些程序用于读取hdfs文件数据。
- Execution-engine(执行引擎)
该组件运行编译器生成的执行计划,注意该执行计划是一个有向无环图。执行引擎会解析执行计划的依赖关系,并且在合适的系统组件中执行。
上图展示了系统的典型流程,其步骤如下:
1.ui调用驱动的执行接口;
2.驱动会为该请求创建一个会话句柄,并且将该请求发送至编译器以生成执行计划;
3/4. 编译器从元存储中获取必要的元数据,这些元数据可以检查请求树的表达式类型,并且可以预测无用的分区并过滤;
5. 编译器生成的计划是一个有向无环图,每个阶段是一个map/reduce任务,或者是一个元数据操作,或者是一个hdfs上的操作。对于map/reduce阶段,该计划包含一个map 操作树和reduce操作树。
6/6.1/6.2/6.3. 执行引擎将这些执行计划发送给相应的组件执行。在每个任务中(map/reduce)中,反序列化程序和中间输出用于读取hdfs文件行数据,并且这些数据会被传输给相关联的执行树。一旦输出完成,它会通过序列化器写入临时hdfs文件中(适用于不需要reduce的map任务