简述hive的架构
一、先上图,官网拷贝的。
二 、hive的组成
2.1、客户端:
1、后台命令行:hive与beeline 。一般做数仓进行脚本开发都是通过hive与beeline进行开发,当然也有spark-sql。
2、hive-web ui:这个本人目前没用过,但是HUE组件是可以通过WEB UI 对hive进行操作。
3、JDBC/ODBC: 这个对开发语言提供的接口了。
2.2、 驱动程序:
hive的核心主要是他的驱动引擎程序driver。包括解释器、编译器、优化器、执行器。
解释器:对HQL进行解析,转换为抽象语法树(AST)。
编译器:对抽象语法树进行编译,生成初步的逻辑计划。
优化器:对初步的逻辑方案进行优化,形成最终的逻辑计划。
执行器:执行逻辑计划。
2.3、元数据:
因为hive的数据文件是存储在HDFS上面的,所以他需要一个角色来管理库表字段数据文件位置等的信息,这个角色就是matestors。hive有自带的数据库,但是因为不方便,所以一般的平台都采用成熟的关系型数据库,比如mysql、oracle、postgerSql, mysql与postgerSql采用较多。当采用第三方关系型数据库做元数据库时,matestors的作用就是负责driver与元数据的协调。
2.4、简单流程
提交HQL到hive-client, client连接驱动程序driver,驱动程序中的解释器对HQL进行解析形成抽象语法树;编译器通过matestors连接元数据库对HQL的数据类型及语法分析,形成逻辑计划;优化器进行优化生成MR任务;执行器执行MR任务。