一、Hive概念
Facebook为了解决海量日志数据的分析而开发了Hive,Hive是一种用SQL语句来读写、管理存储在分布式存储设备上的大数据集的数据仓库框架。
1、 数据是存储在HDFS上的,Hive本身并不提供数据的存储功能。
2、 Hive是用类似SQL的方式来读写、管理数据的,但是底层最终是将语句转换为一个个的MapReduce Job来执行的。
3、 Hive是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(比如MySQL)。元数据信息包括:
Owner | 库、表的所属者 | CreateTime | 创建时间 |
LastAccessTime | 最后修改时间 | Location | 存储位置 |
Table Type | 表类型(内部表、外部表) |
| 表的字段信息 |
二、Hive的优势
1、 Hive通过SQL来分析大数据,而避免了写MapReduce Java程序来分析数据,这样使得分析数据更容易。
2、 Hive的元数据一般存放在关系型数据库中,这样可以统一管理,并且可以实现与其他框架共享元数据。
3、 Hive更容易扩展
(1) 集群部署方面:因为Hive中的数据实际是存放在HDFS上的,所以当数据量增加需要扩展时,扩展HDFS即可。
(2) 分析方面:Hive自带了很多内置函数以利于分析数据,当内置函数不满足需求时,可以通过写Java程序的方式自定义函数,这大大增加了数据分析时程序的可扩展性。
三、Hive技术架构
1、 架构图
2、 Hive的核心
Hive的核心是驱动引擎,驱动引擎由四部分组成:
(1) 解释器:解释器的作用是将HiveSQL语句转换为语法树(AST)。
(2) 编译器:编译器是将语法树编译为逻辑执行计划。
(3) 优化器:优化器是对逻辑执行计划进行优化。
(4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划。
3、 Hive的底层存储
Hive的数据是存储在HDFS上的。Hive中的库和表可以看做是对HDFS上数据做的一个映射。所以Hive必须是运行在一个Hadoop集群上的。
4、 Hive程序的执行
Hive中的执行器,是将最终要执行的MapReduce程序放到YARN上以一系列Job的方式去执行。
5、 Hive的元数据存储
Hive的元数据是一般是存储在MySQL这种关系型数据库上的,
6、 Hive客户端
Hive有很多种客户端。
(1) cli命令行客户端:采用交互窗口,用hive命令行和Hive进行通信。
(2) HiveServer2客户端:用Thrift协议进行通信,Thrift是不同语言之间的转换器,是连接不同语言程序间的协议,通过JDBC或者ODBC去访问Hive。
(3) HWI客户端:hive自带的一个客户端,但是比较粗糙,一般不用。
(4) HUE客户端:通过Web页面来和Hive进行交互,使用的比较多。
CIO之家 www.ciozj.com 公众号:imciow