离线数仓分层概念
数据仓库定义:是为企业所有决策制定过程,提供所有系统数据支持的战略集合。
在技术选型方面,主要有:
其中,离线平台组件主要是
- 离线计算元数据组件:HIVE META
- 离线计算引擎:HIVE / Spark SQL / Presto
实时平台则是一些实时计算框架:
Flume / Kafka / HBase / Kylin / Spark Streaming / Flink 等。
分布式在线存储组件则是:HBase / Kafka / Druid 等。
整个数据仓库搭建以及使用的流程大致是:
- 需求分析
- 架构设计
- 生成数据
- 采集数据
- 搭建行为数仓
- 搭建业务数仓
- 导出数据
- 作业调度
- 数据可视化
ODS 层(Operational Data Store)
原始数据层 | 操作数据层 | 数据运营层 | 数据贴源层,存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。
ODS 层数据的来源方式可以是:
- 业务库
- 例如使用 sqoop 每天定时抽取一次
- 使用 cancal 监听 MySQL 的 binlog,实时接入
- 埋点日志
- 可以使用 flume 定时同步
- 可以使用 Spark Streaming 或者 Flink 来实时接入(实时数仓)
- Kafka
- 消息队列
- ActiveMQ 或者 Kafka 的数据等
ODS 的作用是:
- 在业务系统和数据仓库之间形成一个隔离层,降低数据来源复杂性
- 转移一部分业务系统查询细节的功能,降低业务系统的查询压力
- 完成数据仓库中一些不能完成的功能,因为数据仓库中的数据粒度是根据实际需要而确定的,有时并不会存储过于细节的粒度。此时 ODS 层就可以完成。
DWD 层(Data Warehouse Detail)
数据明细层,对 ODS 层数据进行清洗,去除空值、脏数据、超过极限范围的数据。DWD 层处理后的表,能够成为非常明确可用的基础明细数据。
DWB 层(Data Warehouse Base)
数据基础层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。它是对 DWD 数据明细层进行清洗转换。
(这一层有时可以省略)
DWS 层(Data Warehouse Service)
数据汇总层 | 数据服务层,以 DWD/DWB 层为基础,针对明细粒度的数据进行短周期的轻度汇总。一般是宽表。用于提供后续的业务查询,OLAP 分析,数据分发等。
宽表,字段比较多的数据库表。通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。
由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范,随之带来的主要坏处就是数据的大量冗余,与之相对应的好处就是查询性能的提高与便捷。
ADS 层(Application Data Store)
为各种统计报表提供数据,针对某一个特定的维度进行的汇总。通常说的报表数据或者大宽表就放在这里。例如,前端报表、分析图表、KPI、仪表盘、OLAP 分析等。
(有时可以直接叫 APP 层)
离线数仓命名规范
- ODS 层命名为 ods 前缀
- DWD 层命名为 dwd 前缀
- DWS 层命名为 dws 前缀
- ADS 层命名为 ads 前缀
- 维度表命名为 dim 前缀
- 每日全量导入命名为 df(day full) 前缀
- 每日增量导入命名为 di(day increase) 后缀