Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践

Part.1
马蜂窝数据仓库与数据中台
最近几年 , 数据中台概念的热度一直不减 。 2018年起 , 马蜂窝也开始了自己的数据中台探索之路 。
数据中台到底是什么?要不要建?和数据仓库有什么本质的区别?相信很多企业都在关注这些问题 。
我认为数据中台的概念非常接近传统数据仓库+大数据平台的结合体 。 它是在企业的数据建设经历了数据中心、数据仓库等积累之后 , 借助平台化的思路 , 将数据更好地进行整合与统一 , 以组件化的方式实现灵活的数据加工与应用 , 以更清晰的数据职能组织应对业务的快速变化 , 以服务的方式更好地释放数据价值的一种方式 。
所以 , 数据中台更多的是体现一种管理思路和架构组织上的变革 。 在这样的思想下 , 我们结合自身业务特点建设了马蜂窝的数据中台 , 核心架构如下:
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
在中台建设之前 , 马蜂窝已经建立了自己的大数据平台 , 并积累了一些通用、组件化的工具 , 这些可以支撑数据中台的快速搭建 。 作为中台的另一大核心部分 , 马蜂窝数据仓库主要承担数据统一化建设的工作 , 包括统一数据模型 , 统一指标体系等 。 下面介绍马蜂窝在数据仓库建设方面的具体实践 。
Part.2
数据仓库核心架构
马蜂窝数据仓库遵循标准的三层架构 , 对数据分层的定位主要采取维度模型设计 , 不会对数据进行抽象打散处理 , 更多注重业务过程数据整合 。 现有数仓主要以离线为主 , 整体架构如下:
Hadoop技术博文|马蜂窝数据仓库的架构、模型与应用实践
文章图片
如图所示 , 共分为3层:业务数据层、公共数据层与应用数据层 , 每层定位、目标以及建设原则各不相同 。
(1)业务数据层:包含STG(数据缓冲层)与ODS(操作数据层)两层 , 这两层数据结构与业务数据几乎一致 。 STG:也叫数据准备区 , 定位是缓存来自DB抽取、消息、日志解析落地的临时数据 , 结构与业务系统保持一致;负责对垃圾数据、不规范数据进行清洗转换;该层只为ODS层服务;ODS:操作数据层定位于业务明细数据保留区 , 负责保留数据接入时点后历史变更数据 , 数据原则上全量保留 。 模型设计依据业务表数据变更特性采取拉链、流水表两种形式 。
(2)公共数据层:细分为DWD(明细数据层)、DWS(汇总数据层)、DIM(公共维度层)三层 , 主要用于加工存放整合后的明细业务过程数据 , 以及经过轻度或重度汇总粒度公共维度指标数据 。 公共数据层作为仓库核心层 , 定位于业务视角 , 提炼出对数据仓库具有共性的数据访问、统计需求 , 从而构建面向支持应用、提供共享数据访问服务的公共数据 。 DWD:这一层是整合后的业务过程明细数据 , 负责各业务场景垂直与水平数据整合、常用公共维度冗余加工 , 以及明细业务标签信息加工;DWS:汇总数据层按照主题对共性维度指标数据进行轻度、高度聚合;DIM:对维度进行统一标准化定义 , 实现维度信息共享 。
(3)应用数据层:DWA层 , 主要用于各产品或各业务条线个性化的数据加工 , 例如商业化产品数据、搜索推荐 , 风控等 。
Part.3
数据模型设计
3.1方法选择
数据模型是对现实世界数据特征的抽象 , 数据模型的设计方法就是对数据进行归纳和概括的方法 。 目前业界主要的模型设计方法论有两种 , 一是数据仓库之父BillInmon提出的范式建模方法 , 又叫ER建模 , 主张站在企业角度自上而下进行数据模型构建;二是RalphKimball大师倡导的维度建模方法 , 主张从业务需求出发自下而上构建数据模型 。
大数据环境下 , 业务系统数据体系庞杂 , 数据结构多样、变更频繁 , 并且需要快速响应各种复杂的业务需求 , 以上两种传统的理论都已无法满足互联网数仓需求 。 在此背景下 , 马蜂窝数据仓库采取了「以需求驱动为主、数据驱动为辅」的混合模型设计方式 , 来根据不同的数据层次选择模型 。 主要从以下四个方面综合考虑: