基于Flink的实时数仓架构【面试吹牛草稿】

推荐阅读文章列表:大数据开发面试笔记V4.0 || 面试聊数仓第一季 || 小白大数据学习路线

我相信大多数同学在面试的过程中经常会被问到:你了解实时数仓吗?

你如果这样回答:了解,实时数仓就是应对实时场景的数仓模型,巴拉巴拉...

那么这样并不会让面试官眼前一亮

你如果这样回答:了解,我之前虽然没有做过实时数仓的建设,但是我听过美团以及快手的实时数仓架构负责人的汇报,其中提到了离线实时数据一致性保障我非常感兴趣,巴拉巴拉...(最后的时候你反问面试官:你们公司的实时数仓和离线数仓是如何保证数据一致性的)

那么这样回答一定会让面试官认为你是一个对技术有追求、爱学习、爱思考的同学

以下内容来自美团实时数仓架构负责人、快手实时数仓架构负责人的汇报~

美团实时数仓架构

背景介绍

美团买菜是美团自营生鲜零售平台,上面所有的商品都由美团亲自采购,并通过供应链物流体系,运输到距离用户 3km 范围内的服务站。用户从美团买菜平台下单后,商品会从服务站送到用户手中,最快 30 分钟内。

实时数仓场景分为三个部分:

  • 第一:数据分析部分。其主要用户是业务管理层、数据分析师、数据运营人员等等。他们通过数据大盘、数据看板等形式,获取数据指标,用于企业经营、运营、活动决策。
  • 第二:业务监控部分。其主要用户是大仓物流服务站的一线管理人员和总部的运营中台。他们会对线下作业情况进行异常监控,及时了解并处理线下业务的异动。
  • 第三个:实时特征部分。其主要面向算法模型的实时特征,例如供应链场景的销量预测、履约场景的动态 ETA、用户的搜索排序推荐等等。

架构设计

全域数据中心是基于数据源 ODS 层建设的数据仓库。在数据源 ODS 层,当前主要包含买菜业务数据、美团公共数据、灵犀流量数据、外部数据四个部分。数据仓库主要有 DWD 层、DWS 层、APP 层和一致性的 DIM 层组成。其中,DWD 层主要还原业务的数据加工过程,包含清洗、转换、过滤。原子指标的加工会在 DWD 层进行收口。DWS 层是面向分析场景建设的,主要的建模方式是维度建模。在 DWS 层常见的数据加工过程包含多个业务主题的数据关联,数据力度上的轻度汇总,衍生指标的加工。APP 层主要面向应用场景建设宽表模型,其目的是更好地满足应用场景的个性化需求,提升数据应用的效率和体验。

离线实时数据一致性保障

在实时离线数据的一致性方面,我们基于 Doris 实现了存储一体架构。存储一体架构是基于 Lambda 架构改进实现的。在数据源部分,数据源通过两种数据同步的方式,分别同步到实时数仓和离线数仓。实时数仓通过 Flink 引擎,对数据进行分层加工。离线数仓通过 Spark 引擎,对数据进行分层加工。实时数仓的数据和离线数仓的数据,最终会写到 Doris 存储引擎的同一个数据模型上。Doris 数据模型按天进行分区,实时数仓的数据会写到当天分区,离线数仓的数据会写到历史分区。当外部的数据查询需要查询当天或历史数据时,只需要通过时间分区路由。从而保证数据指标、数据维度口径完全一致。

快手实时数仓架构

背景介绍

快手实时数仓发展到现在经历的几个阶段:

  • 在第一个阶段,快手的实时数仓起始于春节、国庆、快手之夜等大型活动场景。在这些活动场景下,实时数据主要用于满足活动大屏、运营看板、活动效果监控等实时需求。在这个阶段我们基于多次活动场景的实时化建设,沉淀了活动流量、用户激励等活动通用的数据。
  • 在第二个阶段,实时数据被应用于公司核心指标的实时化场景。此时实时数据主要服务于公司的核心数据产品,方便公司领导层实时了解当前公司产品的用户规模等核心指标。在这个阶段我们基于流量的通用性,建设了用户域、设备域的实时化数据。
  • 在第三个阶段,我们专注于业务数据域的实时化建设。在此阶段实时数据开始基于快手各大业务形态如直播、视频、搜索等业务数据,构建各个 FT(FeatureTeam 简称) 的实时数仓建设。此阶段实时数据主要服务于各个业务 FT 的核心实时指标,应用于各个业务 FT 的核心看板。
  • 在当前阶段,随着各大业务 FT 实时数仓建设的完善和稳定,我们开始重点扩充实时数据的使用场景。目前,实时数仓开始直接服务于线上推荐场景、产出用户画像标签、产出实时指标等推荐场景。在这个阶段我们逐步完善了各个业务 FT 的底层数据,提升了各个 FT 数仓数据的覆盖范围,更好的来满足业务对实时数据的需求。

架构设计

ODS 数据主要来自于快手主 APP、快手极速版 APP、快手 PC 端等产品。数据最终以服务端日志、客户端日志、Binlog 日志等形式,进入实时数仓。

在 ODS 层,我们会对超大 QPS 日志进行拆分,对加密数据进行解密。在 DWD 层,我们根据快手的业务划分,从数据上划分出视频 FT、直播 FT、搜索 FT 等。基于各个 FT 的业务过程构建出各个 FT 在多业务过程对应的 DWD 表、DWD 扩展维表。通过灵活的 DWD 层建设来支持各主题域下丰富灵活的实时业务场景。

在 ADS 层,我们基于不同的应用场景,采用不同的技术方案,支持对应的实时需求。

  • 在核心指标场景,我们基于沉淀的典型场景技术方案,采用以 Window 为核心的解决方案;
  • 在 AB 实验多维度大流量场景下,同一份数据经过多实验后,流量会被放大 N 倍。此时首先会通过构建对应的 DWS 层来缩减对应的 QPS,并且会采用 Flink 1.13 以上的版本,借助引擎本身自带的本地聚合特性来提升任务整体的性能。
  • 在垂类业务个性化场景下,我们会采用更细粒度的划分业务过程,拆分出特定场景下的 DWD 数据、DWD 扩展维表数据,从而直接把对应 DWD 数据导入到 Clickhouse 或用 Flink SQL 计算对应的实时指标。

离线实时数据一致性保障

在离线部分,实时数据会同步导出至离线数据。该数据主要用于加速离线链路,如加速离线小时指标的产出等。与此同时,同步的数据也会被用来进行实时数据的准确性校验,支持长周期实时指标的回溯等。从而保障实时数仓的数据和离线数仓的数据一致性。

#数据人的面试交流地##24届软开秋招面试经验大赏##大数据开发##你收到了团子的OC了吗#
全部评论
有汇报录播链接吗大佬
点赞 回复
分享
发布于 2023-10-22 11:50 重庆

相关推荐

5 21 评论
分享
牛客网
牛客企业服务