Hive
Apache Hive数据仓库软件可以使用SQL进编写和管理分布式存在系统中大型数据集,提供一个命令行工 具和JDBC驱动程序来连
hive 官网:hive.apache.org
Hive:是由Facebook开源用于解决海量结构化日志的数据分析统计工具
ps:结构化通俗讲就是用行有列 --> 表 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并且提供类似于SQL语 言进行查询,修改,删除,增加等功能,这个语言不是SQL名字叫做HQL这才是hive的语言
Hive本质
将HQL转换成MapReduce程序
MapReduce需要有一定java功底,学习成本比较高,而Hive是类似于SQL语言,所以比较见到容易入门
Hive→数据仓库
Hive是基于Hadoop之上构建的数据仓库
- Hive同样支持不同计算框架 hive on MapReduce 或 Hive on spark
- Hive同样支持不同压缩格式: Gzip,BZIP2,LZO,Snappy 等等
- Hive同样支持不同文件存储格式 :TextFile ,SequenceFile ,RCFile ,ORC, Parquet(默认格式)
- Hive同样支持自定义函数 UDF 和 UDAF
Hive优点
- 操作接口采用类似于SQL的语言,提高上手容易度
- 避免了去写复杂MapReduce程序,减少开发人员学习成本
- Hice的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合 ps:离线数据分析hive 是现在的市场出现了一个新的概念实时数据仓库(现在落地的少....)
- Hive的优势是处理大数据,对于处理小数据没有优势(小文件).
- Hive支持自定义函数,用户可以根据自身需要实现函数开发(编程)
Hive缺点
- Hive的HQL表达式能有限
- 无法进行迭代计算
- 计算引擎是MapReduce那么在数据挖掘方向会比较弱(效率不高)
- Hive执行效率低
- Hive受限于MapReduce计算程序,所以执行比较慢
- Hive调优比较难
Hive流程
- Hive处理的数据存储在HDFS上
- hive分析数据的底层处理逻辑是MapReduce
- 执行运行在Yarn上执行
Hive架构
1、用户连接主要三个接口
CLI(命令行接口)、Client、JDBC连接
最常用的是Clinet和CLI连接,开发的时候常用CLI连接
CLI启动的时候会启动一个Hive副本
Client连接是客户端,需要使用Hive Server在Client模式(需要判定Server的节点所在)
JDBC是第三方服务连接
2、Hive中最重要的是元数据,Hive会将元数据保存在对应数据库中
元数据中保存什么:表名,表列,分区,分区属性,表是否是外部表或内部表,表的数据所在目录
3、driver解释器,编译器,优化器完成HQL查询语句的词法分析,语法分析,编译,优化以及查询生成的计划
生成的计划存储在HDFS上,并在随后使用MapReduce调用执行
4、Hive的数据是存在HDFS中,大部分的查询,计算是由MapReduce完成。ps:只有一个语句不会触发MapReduce——"select * from 表名"