hive架构及执行过程

hive架构

在这里插入图片描述

1.用户接口 Client

CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)

2.元数据 Metastore

用来存储hive的元数据

使用关系型数据库来存储元数据,默认存储在自带的derby数据库中,推荐使用mysql存储Metastore

hive的元数据包括:表名, 表所属数据库, 表的拥有者, 表的列, 表的分区, 表的属性(表是内部表还是外部表), 以及表数据所在的目录

3.Hadoop

使用hdfs进行存储,使用mapreduce进行计算

4.驱动器 Driver

(1).解析器 SQL Parser

解析器是将sql字符串解析成抽象语法树AST,对抽象语法树进行语法分析,比如表是否存在,字段是否存在,sql语义是否有误

(2).编译器 Physical Plan

编译器将抽象语法树AST编译成逻辑执行计划

(3).优化器 Query Optimizer

优化器对逻辑执行计划进行优化

(4).执行器 Execution

将逻辑执行计划转换成可以运行的物理执行计划,mr或者是spark

hive执行过程

在这里插入图片描述

Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口

hivesql执行转换为mr

客户端将hql语句发送hive的驱动器driver

然后解析器将sql字符串解析成抽象语法树AST,进行词义语义分析,表是否存在,字段是否存在,语义是否错误.

然后编译器将抽象语法树抽象成查询块,将查询块编译成逻辑执行计划.

然后优化器对逻辑执行计划进行优化.

执行器将逻辑执行计划转化成物理执行计划,mr程序或者是spark程序,生成jar包,以及从元数据中获取表数据存储的目录,然后提交到hadoop中去执行,最后将结果返回给客户端.

猜你喜欢

转载自blog.csdn.net/weixin_47699191/article/details/115211292