潇洒的小虾米 · spring ...· 6 月前 · |
彷徨的热带鱼 · 经典论文复现 | ...· 7 月前 · |
考研的紫菜汤 · javascript - vue ...· 1 年前 · |
礼貌的炒饭 · 如何在MongoDB中将集合从一个数据库复制 ...· 1 年前 · |
导读 : 美团外卖数据仓库主要是收集各种用户终端业务、行为数据,通过统一口径加工处理,通过多种数据服务支撑主题报表、数据分析等多种方式的应用。数据组作为数据基础部门,支持用户端、商家端、销售、广告、算法等各个团队的数据需求。本文主要介绍美团外卖离线数仓的历史发展历程,在发展过程中碰到的痛点问题,以及针对痛点做的一系列优化解决方案。
首先介绍下美团外卖的业务场景, 核心交易链路为:用户可以通过美团的各种用户终端(包括美团外卖的APP或者美团 APP、QQ/微信等)下单,然后商家接单、骑手配送,三个阶段完成一笔交易。这一系列交易过程,由包括用户端、商家端、配送平台、数据组、广告组等各个系统协同完成。
这里主要介绍外卖数据组在整个业务中角色。外卖数据组主要是:
1. 整体架构介绍
美团外卖整体分为四层: 数据源层、数据加工层、数据服务层、数据应用层。
数据源层 : 包含接入的原始数据,包括客户端日志、服务端日志、业务库、集团数据、外部数据等。
数据加工层 : 使用 Spark、Hive 构建离线数仓、使用 Storm、 Flink 实时数仓。在数仓之上针对服务对象建设各种数据集市,比如:
数据服务层 : 主要包括存储介质的使用和数据服务的方式。
数据应用层 : 主要包括主题报表、自助取数工具、增值产品、数据分析等支撑业务开展,同时依赖公司平台提供的一些工具建设整体数据应用。
2. ETL on Spark
我们离线计算从 17 年开始从 Hive 迁移到 Spark, 目前大部分任务已经迁移到 Spark 上运行,任务迁移后,相比之前使用 Hive 整体资源节省超过 20%。相比之下 Spark 的主要优势是:
这里简单介绍写 Spark Sql 的任务解析流程:客户端提交任务后,通过 Sql 解析先生成语法树,然后从 Catalog 获取元数据信息,通过分析得到逻辑执行计划,进行优化器规则进行逻辑执行的优化,最后转成物理执行计划提交到 spark 集群执行。
1. 数据仓库V1.0
2016 年之前。外卖数据组的情况是:团队不大,数据量不多,但是市场竞品较多(饿了么、百度等),竞争激烈, 因此当时数据组的目标是:快速响应业务需求,同时做到灵活多变,支撑业务业务决策,基于这种业务背景和实现目标,当时数仓架构设计如图所示主要分了四层,分别是:ODS层/明细层/聚合层/主题层/应用层(具体如图示)。
随着数据量、业务复杂度与团队规模的增长, 为更好完成业务需求数据组团队按照应用做拆分,比如面向总部的总部团队、面向城市业务的城市团队,各个团队都做一份自己的明细数据、指标和主题宽表数据,指标和主题宽表很多出现重叠的情况,这时候就像是”烟囱式“开发。这在团队规模较小时,大家相互了解对方做的事情,基本不会有问题;但是在团队规模增长到比较大的时候,多团队“烟囱式”独立作战也暴露出了这种架构的问题,主要是:
2. 数据仓库V2.0
针对上述问题,数据组做了架构的升级,就是数据仓库V2.0版本。此次升级优化的目标主要是:
完成这个目标的思路如下三个方面:
① 分工标准 :
之前面向不同应用建立不同团队完全纵向切分,会导致可以公用的部分明细数据重复开发。为改变这种情况将数据团队改为:数据应用组和数据建模组。各组职责如下:
② 分层标准 :
在原有分层的基础上,再次明确各层的职责,比如:明细层用来还原业务过程,轻度汇总曾用来识别分析对象;同时数据加工时考虑数据的共性、个性、时效性、稳定性四个方面的因素,基于以上原则明确数仓各层达到数据本身和应用需求的解耦的目标。具体各层细节在文章接下来的内容会展开来讲。
③ 主题标准 :
根据数仓每层的特性使用不同的主题划分方式,总体原则是:主题内部高内聚、不同主题间低耦合。主要有:明细层按照业务过程划分主题,汇总层按照“实体+活动”划分不同分析主题,应用层根据应用需求划分不同应用主题。
2.1 数仓规范
① 数据仓库建模规范
根据前述三个方面的思路,将数仓分为以下几个层次:
其中 ODS/IDL/CDL,以及部分 MDL 集市由数据基建组来做,另外部分数据集市以及 ADL 应用层由数据应用组支撑,分工标准是涉及一些公共的数据集市由数据基建组来完成;数据应用组会围绕应用建设应用数据集市,如流量集市、城市经营集市。
② 数据源层
整体建设思路:从数据源落地到 Hive 表,同时与数据来源保持一致,尽量还原业务。主要由四类数据源:业务库数据、流量日志、集团数据、三方数据。
③ 数据集成层
数据集成层主要是明细数据,与上一层数据源层是有对应关系的。数据集成表的整体建设思路为:
如图中示例为提单表建设过程。
④ 数据组件层
数据组件层,主要建设多维明细模型、轻度汇总模型。总体建设思路与建设原则为:
建设思路 :
建设原则 :
数据组件层生成的指标主要是原子指标,原子指标形成数据组件,方便下游的集市层以及应用层拼接数据表。
多维明细模型 :
以商家信息表建设过程为例:
以上信息就形成了一个由商家主键和商家多维信息组成的商家实体的多维明细模型。
轻度汇总模型 :
以商家交易表假设过程为例:
汇总商家粒度、交易额等原子指标最终建立商家交易表。
⑤ 数据集市层
建设思路 :
建立宽表模型和汇总模型。两者区别为宽表模型是唯一主键,基于主键拼接各种信息;汇总模型的主键类型为联合主键,根据公共维度关联生成派生指标,丰富信息。
⑥ 数据应用层
建设思路 : 根据应用场景选择合适的查询引擎
选型考虑因素 : OLAP 引擎选型考虑以下 8 个方面的因素:
技术选型 : 早期主要使用 Kylin ,近期部分应用开始迁移 Doris。
模型 : 根据不同 OLAP 引擎使用不同数据模型来支持数据应用。基于 Kylin 引擎会使用星型模型的方式构建数据模型,在 Doris 支持聚合模型,唯一主键以及冗余模型。
2.2 数仓 V2.0 的缺点
前面几小节对数仓 2.0 做了详细的介绍,在数仓 2.0 版本的建设过程中我们也遇到了一些问题。前面有提到数据集成层与组件层由数据基建组来统一运维,数据应用层是由数据应用组来运维,这样导致虽然在集成层和组件做了收敛但是在应用层和集市层却产生了膨胀,缺乏管理。
面对这个问题,我们在 2019 年对数仓进行了新的迭代,即数仓 V3.0,下面将对此做详细介绍。
3. 数据仓库V3.0
总体愿景 : 数仓 3.0 优化思路主要是使用建模工具替代人工开发。
建模工具 : 分为基础的建模工具和应用层建模工具。
通过整套工具的使得数据组件越来越完善,应用建模越来越简单,以上就是数仓 3.0 的整体思路。
1. 数据开发流程
先说下我们数据开发流程,数据开发流程主要分为四个阶段:需求分析、技术方案设计、数据开发、报表开发&接口开发,具体内容如下:
在整个数据开发流程中,我们遵循的整体思路是:
即数据符合标准规范,同时将标准规范落地到系统里,最后系统要和周边应用打通,形成一体。下面对各个思路做详细的描述。
① 数据标准化
在数据标准化这块,数据产品团队、数据开发团队、数据分析团队联合建立了数据标准化委员会。数据标准委员会制定了《指标标准规范》、《维度标准规范》以及一些新增指标、维度的流程等一系列规范标准,这样做的好处是:指标维度管理有据可依,指标维度管理有组织保障,保障各业务方指标维度口径清晰统一。
② 标准系统化
明确了数据标准各项规范,需要将这些标准化规范落地到系统,就是我们的数据治理平台,我们的数据治理平台由自建系统 + 集团数据服务构成。这里面主要有四层: 数据生产工具、集团基础平台、元数据层、数据服务层。
图片右边展示了我们的元数据模型,从下而上,我们首先维护词根组成的词库,同时词根、词库组成我们的指标和维度,其中维度分为维表和码表,指标在确保唯一性的前提下划分业务过程,同时区分原子指标、派生指标、计算指标;然后由维度和指标拼接成字段、字段组成表,表再和业务主题、业务过程相关联,识别出实体、行为,区分事实表、维度表同时确定表所在的层级,最后由一张张的表组成我们的数据模型,整个过程就是我们的元数据模型。
③ 系统一体化
有了前面的数据信息之后,我们和下游对接就比较方便。使用到数据治理平台的数据下游有:
通过与各个下游不同形式的对接,数据治理平台完成了整个下游数据应用的联通,以及支持数据使用与生产,形成了一体化的系统。
2. 资源优化
资源优化方面,在美团会把核算单元分成若干个租户 ,然后把资源分配给各个租户,在同一个租户里各个项目组协调分割分配到资源,项目组由任务和数据组成。
我们把租户与对应主题进行挂靠,这样就可让租户有对应的接口人管理,比如把外卖核算单元分为:数仓租户、广告租户、算法租户以及其他的业务租户,让每个租户对应一个接口人,与接口人对接资源优化方案、规则,最后由接口人推动。
我们的优化规则主要分为三个方向:
有了优化规则,针对规则的运营监控流程为:首先对账单分析,账单主要有离线/实时计算资源、存储资源、ODS 数据收集使用的资源、日志中心所使用的资源, 分析帐单后定义运营规则并将规则落地到数据运维平台,由数据运维平台将任务推送到相关责任人,责任人收到通知后,在数据资产中心做相关处理,同时数据运维平台会做成本监控,对超出配额&预算异常进行报警。
这样我们通过建立统一规则并将规则分发到不同租户落地执行,完成数据资源优化的目标。
3. 数据安全
数据安全方面主要是对数据脱敏,数据保密等级的设定 (C1~C4),数据申请做权限控制,审计数据使用的方式,我们分三个阶段完成数据安全的治理:
1. 未来规划思考
最后介绍下,我们对未来的规划,对未来规划的思考主要是在业务和技术两个方面:
这里面数据价值的具体体现,总结为以下几点:
2. 未来规划实施
针对对未来规划的思考,我们具体实施措施计划是:与集团基础平台工具共享共建,在数据应用方面更好做到数据赋能业务,然后就是具体的数据建设、数据管理。
数据建设 :
数据建设主要围绕以下几个方面:
数据管理 :
通过完善数据标准规范,并将规范落地到工具以及增强数据治理,另外通过算法的手段发现数据里隐藏的问题完成数据数据治理。这主要需要我们组织能力建设、标准规范的统一、完善数据治理平台与数据运营机制、探索智能数据治理,最终达到数据管理的规范化、系统化、智能化的目的。
今天的分享就到这里,谢谢大家。
作者介绍 :
惠明 ,美团外卖技术专家
惠明,美团外卖数据智能组技术专家,于2014年加入美团外卖,从0到1建设美团外卖数据仓库,现负责美团外卖数据仓库和数据应用工作。
本文来自 DataFunTalk
原文链接 :
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券