一、Hive体系架构sql
(1)Command-line shell:client在命令行shell上写sql,写完后提交给Hive引擎上。shell
(2)Thrift/JDBC:看作server/jdbc。Thrift是一种协议,把Hive起成一个服务server,经过JDBC的方式提交sql。额外能够看看WebUI(HUE/Zeppelin)经过图形化界面进行jdbc链接,sql在图形化界面上运行,全部进行可视化的展现。架构
(3)metastore:即元数据信息,存储在MySQL上ide
database:name、location、owner...函数
table:name、location、owner、column name/type...优化
(4)Driver:命令行
sql语句是普通的字符串,如何让字符串让Hive识别:翻译
Driver编译sql为语法数server
首先使用SQL Parser进行解析、编译为语法数blog
基于这个语法数,使用Query Optimizer进行优化,取出最优的执行计划
最优的执行计划生成物理执行计划
在这个物理执行计划过程当中,存在序列化及反序列化SerDes、用户本身定义的函数UDFs
物理执行计划会生成一个Execution
在Execution下,生成一个MapReduce
Driver的这一过程,即将客户端来的sql翻译成MapReduce
(5)最后将做业提交到HDFS,进行执行。