一、什么是Hive?
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表。它定义了简单的类 SQL 查询语言,称为 QL/HQL。
Hive适用于离线计算的批量处理。
数据仓库:是一个面向主题的、集成的、不可更新的、随时间不变化的数据集合,它用于支持企业或组织的决策分析处理。
二、关于结构化、半结构化、非结构化的理解
结构化数据、非结构化数据以及半结构化数据是对存储形式的一种数据类型分析。
(1)结构化数据:可以使用关系型数据库表示和存储,表现为二维形式的数据。数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。
需要的存储方案:高速存储应用需求、数据备份需求、数据共享需求、数据容灾需求。
(2)半结构化数据:是结构化数据的一种形式,属于同一类实体可以有不同的属性。常见的半结构数据有XML和JSON。
包括邮件、HTML、报表、资源库等等,这些应用对于数据存储、数据备份、数据共享以及数据归档等基本存储需求。
(3)非结构化数据:就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。
非结构化数据,包括视频、音频、图片、图像、文档、文本等形式。如:文件服务器(PDM/FTP,这些行业对于存储需求包括数据存储、数据备份以及数据共享等。
以上内容转载自:https://blog.csdn.net/xuanjiewu/article/details/70171463
https://blog.csdn.net/liangyihuai/article/details/54864952
三、Hive的体系结构
(1)Hive的元数据
Hive将元数据存储在数据库中(Metastore),支持mysql、derby等。
Hive元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
所有 Hive 的数据都是存储在 HDFS 中的。
(2)架构图
![](https://img.haomeiwen.com/i1187225/bd1fea541c7682c6.jpg)
相关组件:
1)用户接口:Client(客户端)、CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive);
2)元数据(MetaStore):元数据一般默认存储在自带的derby数据库中,但推荐存储在mysql上;
3)Hadoop 使用HDFS进行存储,使用MapReduce进行计算;
4)驱动器:Driver
2.4.1. 解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。
2.4.2. 编译器(Physical Plan):将AST编译生成逻辑执行计划。
2.4.3. 优化器(Query Optimizer):对逻辑执行计划进行优化。
2.4.4. 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MapReduce/Spark/Tez。
四、Hive与Hadoop的关系
用户通过Hive提供的交互接口向Hive发送指令(SQL处理请求),然后Hive再使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。
如下图:
![](https://img.haomeiwen.com/i1187225/366eb874023c9af5.png)
网友评论