0%

离线数仓搭建

离线数仓分层概念

数据仓库定义:是为企业所有决策制定过程,提供所有系统数据支持的战略集合。

在技术选型方面,主要有:

其中,离线平台组件主要是

  • 离线计算元数据组件:HIVE META
  • 离线计算引擎:HIVE / Spark SQL / Presto

实时平台则是一些实时计算框架:

Flume / Kafka / HBase / Kylin / Spark Streaming / Flink 等。

分布式在线存储组件则是:HBase / Kafka / Druid 等。

整个数据仓库搭建以及使用的流程大致是:

  1. 需求分析
  2. 架构设计
  3. 生成数据
  4. 采集数据
  5. 搭建行为数仓
  6. 搭建业务数仓
  7. 导出数据
  8. 作业调度
  9. 数据可视化

数据仓库分层数据仓库分层

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) 后缀