Hive的体系结构可以分为以下几部分:
(1)用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。 WUI是通过浏览器访问Hive。
(2)Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
(3)解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。
(4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(包含*的查询,比如select * from tbl不会生成MapRedcue任务)。
Hive将元数据存储在RDBMS中,
简洁写法:
Client(用户接口):
1.CLI(hive shell)
2.JDBC/ODBC(java 访问hive)
3.WEBUI(浏览器访问hive)
Meta store:元数据
Driver:驱动器
解析器:
编译器:
优化器:
执行器:
操作:
- 创建表并加载数据
启动HDFS、YARN和Hive,启动完毕后创建Hive数据库
hive>create database hive;
hive>show databases;
hive>use hive;
更多操作见下表:
命令行工具:
HiveServer2提供了一个新的命令行工具Beeline,它是基于SQLLine CLI的JDBC客户端。
命令: cd /usr/hdp/2.4.2.0-258/hive/bin (切换至hive安装bin目录), 通过 beeline 命令进入beeline shell
beeline 启动常用参数说明:
-u<database URL>: 通过 JDBC 访问数据库的 Url 地址
-n <username>: 访问数据库的用户名
-p <password> : 访问数据库密码
-e <query>:Sql 语句执行参数 beeline -e "query_string"
-f <file>: sql文件执行参数, beeline -f filepath
--color=[true/false]:Control whether color is used for display. Default is false
--help:帮助
命令: beeline
进入 beeline 命令行后,连接数据库 : !connect jdbc:hive2://localhost:10000/default
输入用户名和密码,进入 beeline shell
sqlline 语法: !quit 退出beeline (不要带分号)
多行命令用 ";" 分隔, 注释: “ -- ” (在里面执行的sql语句要带分号)