基于Hive的离线数据仓库项目
项目的架构
架构图
架构图说明
- Zookeeper:集群管理工具,主要服务于hadoop高可用,以及其他基于zookeeper管理的大数据软件
- HDFS:大数据最终数据的储存
- YARN:负责资源的分配
- HIVE:用于编写SQL进行数据分析
- Oozie:主要负责自动化定时调度
- Sqoop:用户关系数据库的导入导出
- Flume:日志文件的导入导出
- HUE:提升hadoop的用户体验,可以比较友好的操作hdfs,hive等
- FineBI:数据报表展示工具
- Cloudera Manager大数据统一管理平台,它负责安装软件、配置、启动和停止服务以及管理运行服务的群集。
数据仓库分层
为什么要对数据仓库分层
分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控。那么数据分层优点有哪些呢?
- 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
- 依赖关系直观:依赖关系明确,出问题后很容易顺着依赖关系找到原因。
- 减少重复开发:开发一些通用的中间层数据,能够减少极大的重复计算。
- 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤。
注意:数据分层后,数据会经多层,因此数据仓库会存在大量冗余的中间数据。这些中间数据,缓存多久需要考虑。
数仓分层思想
操作数据层(ODS)
Operate data store(操作数据存储),是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入ODS层。注意,一般是从业务系统增量抽取
,生成的数据保留时间
由业务需求决定。
数据仓库层(DW)
Data warehouse(数据仓库)。在这里,从ODS层中获得的数据按照主题建立各种数据模型。例如以研究人的旅游消费为主题的数据集中,便可以结合航空公司的登机出行信息,以及银联系统的刷卡记录,进行结合分析,产生数据集。在这里,我们需要了解四个概念:维(dimension)、事实(Fact)、指标(Index)和粒度( Granularity)。
DW数据分层,由下到上为 DWD,DWB,DWS
DWD:data warehouse detail 细节数据层,是ODS与数据仓库的隔离层
。主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。
DWB:data warehouse base 基础数据层,在DWD层的数据基础上,对数据做一些轻微的聚合
操作,生成一些列的中间结果表
,提升公共指标的复用性
,减少重复加工的工作。
DWS:data warehouse service 服务数据层,该层是基于DWM上的基础数据,整合汇总
成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
数据应用层(APP)
该层主要是提供数据产品
和数据分析
使用的数据,一般会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。
事实表,纬度表
事实表(Fact Table)
是指存储有事实记录的表,如系统日志、销售记录等;事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。事实表作为数据仓库建模的核心
也是维度建模的核心表
,需要根据业务过程来设计。
每个数据仓库都包含一个或者多个事实数据表,事实表是对分析主题的度量,它包含了与各维度表相关联的外键,并通过连接(Join)
方式与维度表关联。
维度表(Dimension Table)
维度就是看待问题的角度,分析业务数据,从什么角度分析,就建立什么样的维度。所以维度就是要对数据进行分析时所用的一个量,比如你要分析产品销售情况,你可以选择按商品类别来进行分析,这就构成一个维度,把所有商品类别集合在一起,就构成了维度表。
纬度表相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。维度是维度建模的基础和灵魂
。使用维度表有诸多好处
- 缩小了事实表的大小。
- 便于维度的管理和维护,增加、删除和修改维度的属性,不必对事实表的大量记录进行改动。
- 维度表可以为多个事实表重用,以减少重复工作。
粒度
事实表的粒度,决定了数据仓库中数据的详细程度
。可以理解成一行的详细程度,例如销售记录表中每条销售记录是最小粒度,按小时分组销售是一个粒度,按天,按周等。
粒度是指数据仓库的数据单位中,保存数据的细化程度的级别。简单点来看,在实事表中一条记录所表达的业务细节,就是粒度。
指标
用来定义、评价和描述特定事物的一种标准或方式。比如:新增用户数、累计用户数、用户活跃率等是衡量用户发展情况的指标。
纬度建模技术知识
维度建模是一种将大量数据结构化的逻辑设计手段,包含维度和指标,它不像ER模型目的是消除冗余数据,维度建模是面向分析,最终目的是提高查询性能,所以会增加数据冗余,并且违反三范式。
维度建模一般可以分为三种:
- 星型模型
- 雪花模型
- 星座模型
其中最常用的其实是星型模型
扩展阅读
最后更新于 2022-10-21 16:21:24 并被添加「数据仓库 hive」标签,已有 1021 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭