先拍图(Hive体系架构),然后对图内各个组件进行简单介绍。
Hive提供了三种用户接口:
①CLI(command line interface):CLI启动的时候会同时启动一个Hive副本;
②JDBC客户端:封装了Thrift,java应用程序,可以通过指定的主机和端口连接到在另一个进程中运行的hive服务器。ODBC客户端:ODBC驱动允许支持ODBC协议的应用程序连接到Hive。
③Web GUI接口:通过浏览器访问Hive;
Thrift服务器:基于socket通讯,支持跨语言。Hive Thrift服务简化了在多编程语言中运行hive的命令,绑定支持C ,PHP,Python以及Ruby语言。
解析器:
- 编译器:完成HQL语句从词法分析,语法分析,编译,优化以及执行计划的生成。
- 优化器是一个演化组件,当前它的规则是:列修剪以及谓词下压。
- 执行器会顺序执行所有的job,如果task链不存在依赖关系,可以采用并发的方式执行job。
元数据库:Hive的数据由两部分组成,数据文件和元数据。元数据用于存放Hive库的基础信息,它存储在关系数据库中,如mysql。元数据包括:数据库信息,表的名字,表的列和分区极其属性,表的属性及所在目录等等信息。
Hadoop:Hive的数据文件存储在HDFS中,大部分的查询有MapReduce完成。
Hive运行机制:
①用户通过接口连接Hive,发布HQL
②Hive解析查询并制定查询计划
③Hive将查询转换成MapReduce作业
④Hive在Hadoop上执行MapReduce作业