一.什么是hive(重要)
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类 SQL 查询功能;
- 使用HQL作为查询接口;
- 使用HDFS存储
- 使用MapReduce计算
二.hive的优势和特点(重要)
1.优点
- 提供了一个简单的优化模型
- HQL类SQL语法,简化MR开发
- 支持在不同的计算框架上运行(MR, Tez, Spark)
- 支持在HDFS和HBase上临时查询数据
- 支持用户自定义函数、格式
- 成熟的JDBC和ODBC驱动程序,用于ETL和BI(使用java)
- 适合离线数据处理,稳定可靠(真实生产环境)
- 有庞大活跃的社区
etl:数据清洗
BI:SQL+可视化
2.缺点
- Hive的执行效率比较低,由于hive是基于hadoop,Hadoop 本身是一个批处理,高延迟的计算框架, 其计算是通过 MapReduce 来作业,具有高延迟性
- hive不适合迭代算法。
- Hive 适合对非实时的、离线的、对响应及时性要求不高的海量数据批量计算,即查询,统计分析。
三.Hive发展历史及版本
07年8月 – 始于Facebook
13年5月 – 0.11 Stinger Phase 1 ORC HiveServer2
13年10月 – 0.12.0 Stinger Phase 2 - ORC improvement
14年4月 – Hive 0.13.0 as Stinger Phase 3
14年11月 – Hive 0.14.0
15年2月 – Hive 1.0.0
15年5月 – Hive 1.2.0 (1.2.1 本系列课实验重点版本 )
16年2月 – Hive 2.0.0 (添加 HPLSQL, LLAP)
16年6月 – Hive 2.1.0 (2.1.0 本系列课实验补充版本 )
四.元数据管理
(1)记录数据仓库中模型的定义、各层级间的映射关系
(2)存储在关系数据库中
默认Derby, 轻量级内嵌SQL数据库
Derby非常适合测试和演示
存储在.metastore_db目录中
实际生产一般存储在MySQL中
修改配置文件hive-site.xml
(3)HCatalog
将Hive元数据共享给其他应用程序
五.基本命令
- 启动命令
hive
- 退出命令
!q
六.hive架构原理(重要)
Hive底层存储是基于HDFS进行存储,Hive的计算底层是转化成MapReduce进行计算
运行原理:Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver,结合元数据 (MetaStore),将这些指令翻译成MapReduce,提交到 Hadoop 中执行,最后,将执行返回的结果输出到用户交互接口
1.用户接口(client)
CLI(Hive Shell)、JDBC/ODBC(Java 访问 Hive)、WEBUI(浏览器访问 Hive)