1. 数据仓库主要特征
数据仓库是面向主题的(Subject-Oriented)、集成的(Integrated)、稳定的(Non-Volatile)和时变的(Time-Variant)数据集合,用以支持管理决策。
主题性:指的是分析的需求
集成性:数据仓库中数据来源于各个数据源,将各个数据源聚合在一起
稳定性:存在数据仓库的数据,都是已经发生过得数据,这些数据不允许修改
时变性:随着时间的推移,数据也在不断的新增
2. 数据仓库(OLAP)与数据库(OLTP)区别
数据库
数据库是面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理,也被称为联机事务处理 OLTP(On-Line Transaction Processing)。
数据仓库
数据仓库一般针对某些主题的历史数据进行分析,支持管理决策,又被称为联机分析处理 OLAP(On-Line Analytical Processing)。
首先要明白,数据仓库的出现,并不是要取代数据库。
两者区别
- 数据库是面向事务的设计,数据仓库是面向主题设计的。
- 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
- 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
- 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。
3. 数据仓库的分层
按照数据流入流出的过程,数据仓库架构可分为三层:源数据、数据仓库、数据应用

- 源数据层(ODS):操作性数据(Operational Data Store),是作为数据库到数据仓库的一种过渡,ODS的数据结构一般与数据来源保持一致,而且ODS的数据周期比较短。
- 数据仓库层(DW):数据仓库(Data WareHouse),是数据的归宿,这里保存着所有的从ODS到来的数据,并长期保存,而且这些数据不会被修改,DW层的数据应该是一致的、准确的、干净的数据,即对源数据进行了清洗后的数据。
- 数据应用层(DA):数据应用(Data Application),为了特定的应用目的或应用范围,二从数据仓库中独立出来的一部分数据,也可称为部门数据或者主题数据,该数据面向应用
4. 数据仓库之ETL
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL是将业务系统的数据经过抽取、清洗、转换之后加载到数据仓库的过程,目的是将企业中分散、零乱、标准不统一的数据整合到一起。
ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定。

5. Hive的特点
① Hive最大的特点是通过SQL来分析大数据,而避免了写MapReduce程序来分析数据,使分析数据更简单。
② 数据是存储在HDFS上,Hive本身不提供数据存储功能,它可以使已存储的数据结构化。
③ Hive是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(如MySQL)
④ 数据存储方面:它能存储很大的数据集,可以访问直接存储在Apache HDFS或者其它数据库存储系统(如HBASE)中的文件。
⑤ 数据处理方面:因为Hive语句最终会生成MapReduce任务去计算,所以不适用于实时计算的场景,它适用于离线计算分析。
⑥ Hive除了支持MapReduce计算引擎,还支持Spark和Tez这两种分布式计算引擎。
⑦ 数据的存储格式有多种,比如数据源是二进制格式,普通文本格式等等
6. Hive架构

基本组成:
客户端:Client CLI(hive shell命令行)、JDBC/ODBC(Java访问hive)、WEBUI(浏览器)
元数据:
MeteStore:元数据包括:表名、表所属数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。
驱动器:Driver
- 解析器(SQL Parser):将SQL字符转换成抽象语法树AST,这一步一般使用第三方工具库完成。
- 编译器(Physical Plan):将AST编译生成逻辑执行计划
- 优化器(Query Optimizer):对逻辑执行计划进行优化
- 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划
存储和执行:Hive用HDFS进行存储,用MapReduce进行计算
元数据(metadata):本质上只是用来存储hive中有哪些数据库,哪些表,表的字段,分区,索引以及命名空间等元信息。元数据存储在关系型数据库中。如hive内置的Derby、第三方数据库如MySQL等。
元数据服务(metastore),作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。
7. Hive的安装模式
本地模式采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server.在这里我们使用MySQL。
本地模式不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。也就是说当你启动一个hive 服务,里面默认会帮我们启动一个metastore服务。
hive根据hive.metastore.uris 参数值来判断,如果为空,则为本地模式。
缺点是:每启动一次hive服务,都内置启动了一个metastore。

远程模式下,需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程模式的metastore服务和hive运行在不同的进程里。
在生产环境中,建议用远程模式来配置Hive Metastore。
在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive

远程模式下,需要配置hive.metastore.uris 参数来指定metastore服务运行的机器ip和端口,并且需要单独手动启动metastore服务。
8. Hive的交互方式
第一种交互方式:bin/hive
cd /export/servers/hive-2.1.0/
bin/hive
第二种交互方式:使用sql语句或者sql脚本进行交互
不进入hive的客户端直接执行hive的hql语句

本文介绍了数据仓库的特征、与数据库的区别、分层及ETL过程。重点阐述了Hive的特点、架构、安装模式、交互方式等。还讲解了Hive表类型、排序区别、函数、存储格式、调优等内容,最后分析了Hive小文件过多问题及解决方法。
最低0.47元/天 解锁文章
6万+

被折叠的 条评论
为什么被折叠?



