Hive架构
Hive其实是架设在HDFS之上的SQL解析执行框架,就是说我们使用Hive可以通过SQL来操作HDFS上的数据。下面是Hive On MapReduce的架构图
- 上图中描述了Hive中主要的组件和Hadoop的交互,下面是对主要组件的解释:
- UI:提交SQL查询的user interface,我们前面接触过的hive命令行、beeline以及JDBC客户端程序都属于UI
- Driver:这个组件负责接收SQL查询请求。这个Driver提供了对外服务的JDBC/ODBC的接口。
- Compiler:这个组件负责SQL的解析,解析SQL中的关键词,然后结合Metastore中表或者分区等信息,最终生成并返回执行计划
- Metastore:这个组件负责存储各种表以及分区等元数据信息,比如表名、分区字段等。当然也存储了表中的列以及列的数据类型、表的SerDe、表存储的数据的文件目录等元数据信息
- Execution Engine:这个组件是执行Compiler组件生成的执行计划,这个执行计划其实是一个包含若干个stages的DAG,Execution Engine会维护这些不同stages之间的依赖,然后按照stage的执行顺序将stage翻译成对应的分布式执行引擎需要执行的代码进行执行,比如上图就是将stage中的逻辑翻译成MapReduce任