文章目录
前言
#博学谷IT学习技术支持#
一、数据仓库介绍
(一) 数据仓库的基本概念
数据仓库,简称数仓,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的商业智能能力,指导业务流程改进、监视时间、成本、质量以及控制,数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向
(二)数据仓库的主要特征
数仓的特性主要有以下四种:
- 主题性,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织
- 集成性,数仓中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同
- 稳定性,数仓中保存的数据是一系列历史数据,不允许被修改
- 时变性,数仓会定期接收新的集成数据,反应出最新的数据变化
(三)数据仓库与数据库的区别
两者的区别主要有以下几点:
- 数据库是面向事务的设计,数据仓库是面向主题设计的。
- 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
- 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计
- 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
二、Hive的概念
(一)Hive的介绍
-
什么是Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,其本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至也可以说hive就是一个MapReduce的客户端。
-
Hive的特点
(1)Hive最大的特点是通过类SQL来分析大数据,而避免了写MapReduce程序来分析数据,使得分析数据更加容易
(2)数据是存储在HDFS上的,Hive本身并不提供数据的存储功能,它可以使已经存储的数据结构化
(3)Hive是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上
(4)数据存储方面,它能够存储很大的数据集,可以直接访问存储在Apache HDFS或其他数据存储系统中的文件
(5)数据处理方面,因为Hive语句最终会生成MapReduce任务去计算,所以不适用于实时计算的场景,适用于离线分析
(6)Hive除了支持MapReduce计算引擎,还支持Spark和Tez这两种分布式计算引擎
(7)数据的存储格式有多种,比如数据源是二进制格式,普通文本格式等等
(二)Hive的架构
Hive主要由Client客户端,Metastore元数据,Driver驱动器以及存储和执行模块,各模块的介绍如下:
- 客户端:客户端有很多中方式,hive shell 命令行、java访问hive或者是浏览器访问hive
- 元数据:Metastore本质上只是用来存储hive中的元数据信息,元数据默认存储在自带的derby数据库中
- 驱动器:Driver,Driver中包括
(1)解析器(SQL Parser):将SQL字符转换成抽象语法树AST,并进行一些常规性检查
(2)编译器(Physical Plan):将AST编译生成逻辑执行计划
(3)优化器(Query Optimizer):对逻辑执行计划进行优化
(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划,对于Hive来说,就是MapReduce或者是Spark - 存储和执行:Hive使用HDFS进行存储,使用MapReduce进行计算
(三)Hive与传统数据库相比
Hive具备与SQL相似的外表,但是其执行流程和应用场景与SQL完全不同,Hive只适合用于进行批量数据统计分析
总结
Hive是一个数仓工具,该工具并不存储数据,其底层主要是MapReduce,数据存储在HDFS上,该工具通过SQL命令转换成MapReduce,对存储在HDFS上的文件进行运算。