Hive - [01] 概述
一、Hive是什么
是Facebook开源,用于解决海量结构化日志的数据统计工具。
是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
Hive处理的数据存储在HDFS上,数据分析底层实现是MR,执行程序运行在Yarn上。
二、Hive的优缺点
优点(Advantages):
- 操作接口采用类SQL 语法,提供快速开发的能力(简单、容易上手)。
- 避免了去写 MapReduce,减少开发人员的学习成本。
- Hive 的执行延迟比较高,因此 Hive 常用于数据分析(对实时性要求不高的场合)。
- Hive 优势在于处理大数据,对于处理小数据没有优势,因此 Hive 的执行延迟比较高
- Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
缺点(Disadvantages):
- HQL表达能力有限,迭代式算法无法表达,
- 数据挖掘方面不擅长:由于 MapReduce 数据处理流程的限制,效率更高的算法却无法实现。
- Hive 的效率比较低,Hive 自动生成的 MR 作业,通常情况下不够智能化
- Hive 调优比较困难,粒度较粗。
三、Hive 的架构

HiveQL:Hive的SQL方言,类似于SQL查询语言。HiveQL允许用户使用类似于SQL的语言来查询和分析数据。
Hadoop:Hive运行在Hadoop上,是一个基于MapReduce的数据处理框架。Hadoop提供了分布式存储和计算能力,使得Hive可以高效地处理大规模数据。
执行引擎:Hive的执行引擎将HiveQL语句转换为MapReduce作业或Tez作业,并提交给Hadoop集群进行执行。
Metastore:Hive元数据存储库,用于管理表、分区和其他元数据信息。Hive Metastore是一个RESTful API,可以通过HTTP协议访问。
Driver:Hive提供了许多不同的驱动程序,用于与不同的数据源进行交互。例如,Hive支持MySQL、Oracle、PostgreSQL等常见的关系型数据库。
Web UI:Hive提供了一个Web界面,称为Hive Web UI(https://hive.apache.org/hive-web-site/)。这个UI可以方便地执行查询、查看和管理Hive集群中的数据。
四、Hive的相关概念
记录:数据(存储在HDFS上,表里面的记录会存储很多,数量无上限)
数据库、表:为了描述记录(元数据,元数据存储在关系型数据库,数据库(MySQL)中并不存储 Hive 的记录。)
Hive的元数据包括:
- 表的名字
- 表的列和分区及其属性
- 表的属性(是否为外部表等)
- 表的数据所在的目录等
五、Hive的三种模式
Tips:Hive的元数据可由access、virtual ofx、sql server、mysql、sqlite、postgresql、oracle管理。
5.1、本地模式
此模式连接到一个In-Memory的数据库Derby,一般用于单元测试(UnitTest)
5.2、单用户模式
通过网络连接到一个数据库中,是最常使用到的模式
5.3、多用户模式
远程服务器模式,用于非java客户端访问元数据(metastore),在服务器端启动metaStoreServer,客户端利用thrift协议通过metaStoreServer访问元数据库
六、Hive 中的数据类型
| 类 型 | Hive | MySQL中类似的 |
| 整 数 | numberic、tinyint | tinyint、int、bigint、mediumint、numeric |
| 浮 点 | decimal | double、decimal |
| 字符串 | string | varchar、text、char |
| 布 尔 | 无 | 无 |
| 时 间 | date/time | date、time、datetime、timestamp |
| JSON | json | |
| Geom | 几何图形(周边搜索)(地理系统,地图) | |
| 二进制 | boolean,binary | 图片 |
| 复杂类型 | Arrays,maps,structs,union | json |
— 要养成终生学习的习惯 —

浙公网安备 33010602011771号