Hive简介
什么是hive
hive是基于Hadoop的一个数据仓库工具,并不是一个数据库。用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive是十分适合数据仓库的统计分析和Windows注册表文件。
Hive并不是一个关系型数据库,只是一个工具,提供sql终端、解析sql、转化mr程序并优化的一种工具!
hive概述
Hive可以使用SQL来促进对已经存在在分布式设备中的数据进行读,写和管理等操作!
Hive在使用时,需要对已经存储的数据进行结构的投影(映射)
Hive提供了一个命令行和JDBC的方式,让用户可以连接到hive!
注意:Hive只能分析结构化的数据!
Hive在Hadoop之上,使用hive的前提是先要安装Hadoop
Hive要分析的数据存储在HDFS,hive为数据创建的表结构(schema),存储在RDMS(relevant database manage system 关系型数据库管理系统,比如mysql)
hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。
因此,hive 并不适合那些需要高实性的应用,例如,联机事务处理(OLTP)。hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,hive 将用户的hiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。hive 并非为联机事务处理而设计,hive 并不提供实时的查询和基于行级的数据更新操作。hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
hive基本原理
![](https://img.haomeiwen.com/i14882658/111ec04ddb0670d6.png)
hive的数据存储
1)hive要分析的数据是存储在HDFS上
hive中的库、表在hdfs中的就是一个目录。
hive中的数据,是存在在表目录中的文件!
2)在hive中,存储的数据必须是结构化的数据。而且
这个数据的格式要和表的属性紧密相关!
表在创建时,有分隔符属性,这个分隔符属性,代表在执行MR程序时,使用哪个分隔符去分割每行中的字段。
3)hive中的元数据(schema,表的映射关系、位置等)存储在关系型数据库 ,元数据的位置设置在mysql中。
可以在hive中建表
表:有表名, 表字段 ,字段数据类型, 表管理的数据的位置(HDFS上的结构化数据)
元数据: 记录表结构的数据 存储在mysql中
表的映射数据: 表的映射数据存储在HDFS中
*执行select from tb_name的大致流程
1 加载元数据信息 ,获取表结构
2 元数据中获取表映射数据在HDFS中的位置
3 将SQL语句交给SQL解析引擎
4 Hive 将 HQL 转换成一组操作符(Operator),比如 GroupByOperator, JoinOperator 等
5 操作符 Operator 是 Hive 的最小处理单元
6 每个操作符代表一个 HDFS 操作或者 MapReduce 作业
7 Hive 通过 ExecMapper 和 ExecReducer 执行 MapReduce 程序,执行模式有本地模式和分 布式两种模式
8 编译器进行编译
9 优化器进行优化HQL语句
10 执行
驱动器:Driver:
![](https://img.haomeiwen.com/i14882658/577f4e1858178e19.png)
SQL Rarser 解析器:将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
Physical Plan编译器:将AST编译生成逻辑执行计划
Query Optimizer优化器:对逻辑执行计划进行优化。
Execution执行器:将执行计划封装成mr模板。把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。
远程连接
1.客户端shell连接
2.beeline工具远程连接
client--(JDBC-hive-driver)-->HiveServer2--->MetaStoreServer---(JDBC-mysql-driver)---MySql
hiveserver2
https://zhuanlan.zhihu.com/p/68194396
beeline
Hive客户端工具后续将使用Beeline 替代HiveCLI ,并且后续版本也会废弃掉HiveCLI 客户端工具,Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于SQLLine CLI的JDBC客户端。
Beeline支持嵌入模式(embedded mode)和远程模式(remote mode)。在嵌入式模式下,运行嵌入式的Hive(类似Hive CLI),而远程模式可以通过Thrift连接到独立的HiveServer2进程上。从Hive 0.14版本开始,Beeline使用HiveServer2工作时,它也会从HiveServer2输出日志信息到STDERR。
备注:使用beeline前需要先启动hiveserver2
网友评论