Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flink 数据湖 助力美团数仓增量生产

Flink 数据湖 助力美团数仓增量生产

作者头像
kk大数据
发布于 2020-12-29 02:21:56
发布于 2020-12-29 02:21:56
1.7K0
举报
文章被收录于专栏:kk大数据kk大数据

一、美团数仓架构图

如上图,是美团最新的数仓架构图。

整个架构图分为三层,从下往上看,最下面一层是数据安全,包括受限域认证系统、加工层权限系统,应用层权限系统,安全审计系统,来保证最上层数据集成与处理的安全;

中间一层是统一的元数据中心和全链路血缘,覆盖了全链路的加工过程;

最上层根据数据的流向,分成数据集成,数据处理,数据消费,数据应用,四个阶段;

在数据集成阶段,对于不同的数据来源(包括用户行为数据,日志数据,DB 数据,文件数据),都有相对应的数据集成系统,把数据收集到统一的存储之中,包括 KafkaHive 等。

在数据处理阶段,有一个面向用户的数据开发平台(万象平台),可以使用两条数据处理链路来加工数据,一个是流式处理链路,一个是离线处理链路。

数据加工好了之后,使用内部自研的 DeltaLink 同步数据到其他的应用中,例如即席分析,即席查询,报表等应用。

上图中标红的地方,Kafka -> HDFS,Flink,DeltaLink 是本次重点分享的内容。

二、美团当前 Flink 应用场景和规模

美团 Flink 应用场景包括:

  • 实时数仓、经营分析、运营分析、实时营销
  • 推荐、搜索
  • 风控、系统监控
  • 安全审计

Flink 集群规模如下(高峰流量是每天最高峰的流量):

三、基于 Flink 的流式数据集成

数据集成经历了多个版本的迭代

1. 数据集成 V1.0

V1.0 版本很简单,是完全批量同步的架构。

在数据量比较少的情况下,这样的批同步的架构,优势很明显,架构简单,非常简单易于维护。

但是缺点也很明显,光是数据传输就 1 - 2 个小时。

2. 数据集成 V2.0

在 V2.0 中,增加了流式传输的链路(下面的链路),把数据实时传输到 ODS 中(批量传输的链路仍然是必须的,作为第一次全量的导入)。

流式传输系统,使用 canal (阿里开源) 采集 Mysql 的 binlog 日志到 kafka。后边有一个 Kafka2Hive 系统,这个系统经过了多个版本的迭代。

Kafka2Hive 模块,最开始是使用 Camus ,每一个小时拉一次数据,跑在 Spark 上。后面改成使用 SparkStreaming ,但是 Spark Streaming 在资源的利用方面有一些问题的,所以最终弄全部迁移到了 Flink 框架上来。

这样的架构,优势是非常明显的:把数据传输放在了 T+0 的时间去做,T + 1 的时间只需要经过一次 Merge 即可,花费的时间可能就从 2 - 3 个小时减少到 1 个小时了,提升是非常明显的。

3. 数据集成 V3.0

数据集成 V3.0 的架构,前面的部分和 V2.0 一样,关键的是后面这一部分。

在 V2.0 架构中,凌晨需要对数据做一次 Merge,这个操作对于 Hdfs 的压力非常大,要把几十 T 的数据读过来,清洗一遍,再把几十 T 的数据写入到 Hdfs。

所以,在 V3.0 架构中,引用了 Hidi 架构(Hidi 是美团内部基于 Hdfs 开发的类似 Hudi 或者 Iceberg 的文件格式)。

4. 美团自研的 Hidi

要做到增量生产,最关键的特性在于

  • 支持增量读取,也就是读取当前时间到前一段时间的数据, 才能做到增量;
  • 支持基于主键的 Upsert/Delete。Hidi 是美团在 2,3 年前,在内部自研的架构,此架构的特性在于:
  • 支持 Flink 引擎读写;
  • 通过 MOR 模式支持基于主键的 upsert/Delete;
  • 小文件管理 Compaction;
  • Table Schema

可以对比 Hidi、Hudi、Iceberg,如下:

Hudi 最亮眼的特性是支持基于主键的 Upsert/Delete,但劣势是深度和 Spark 绑定,但在国内 Flink 框架这么火热的情况下,难免会有点美中不足。

Iceberg 不依赖于执行引擎,可以深度和 Flink 集成。

美团自研的 Hidi 则根据自己的需求实现了诸多的特性,目前仍然在完善中。

四、基于 Flink 的增量生产

1、传统离线数仓特性分析

一般我们说数仓,都是指离线数仓。离线数仓有三个重要的指标,一是时效性,二是质量,三是成本。

首先是时效性,有两个更深层次的含义,一个是实时,一个是准时。

实时就是实时流式处理,来一条处理一条,实时处理消耗的资源很多。

准时,就是按时处理。比如广告需求,可能只需要在每个整点,统计过去一小时或者在每个整点统计当天的数据即可,没有必要做到实时,只需要到点能产出数据就行。

所以,总结下来,离线数仓和实时数仓各有利弊,离线数仓在质量和成本上会有优势,但是时效性不足;实时数仓,在时效性上很有优势,但是质量和成本都略逊色。

2. 增量生产

如下图,是离线数仓、实时数仓和增量计算的对比

所谓增量计算,就是企业在时效性、质量、成本上做一个权衡,时效性需要高一点,但是不用做到 RealTime,OnTime 也可以接受( 8 点看报表,提前到 3 点计算好也没有很大的意义),但是质量要高,成本也需要尽量少。

3. 增量计算的优点

增量计算最大的优点,就是可以尽快的发现问题。

一般我们会在第二天花 8 个小时到 12 个小时,把前一天的数据生产出来。但是如果第二天发现数据错了,可能要花一天的时间去修复数据,这个时候,准时性和质量都被打破了。

如下图,横坐标是时间(T 表示当天,T+1 表示第二天),黑色线表示离线生产,大概利用 T + 1 一半资源去生产。红色线是实时生产,在当天就生产数据,占用的资源比离线计算高。

下图是增量生产的示意图。

绿色线是增量计算,在当天就计算好。

黑色线是离线计算,在第二天的前半天计算。

增量计算,是在当天计算,在当天就能提前发现问题,避免 T + 1 修复数据。并且还可以充分利用资源,提前产出数据的时间,并且占用资源更少。

4. 增量生产架构图

下图是美团增量生产的架构图(目前的架构正在逐步完善中,还没有完全实现)

如图,最上面是实时处理的链路,Flink 消费 Kafka 数据 到 下游的 kafka,输出结果给下游使用或者供 OLAP 分析。

下面的链路是批处理,首先 kafka 数据经过 Flink 集成到 HDFS,再通过 Spark 做离线的生产,最终经过 Flink 导出到 OLAP 应用里面去。

上文提到的增量生产,就是图中标绿色的部分,希望可以用增量生产来替换掉 Spark 离线计算,做到计算引擎的统一。

要能支持增量生产,需要具备几个核心的能力:

  • Flink SQL 能力能够对齐 Spark SQL;
  • Hidi 支持 Upsert/Delete 特性(Hidi 已支持);
  • Hidi 支持全量和增量的读取,全量读取用于查询和修复数据,增量读取用来增量生产;

五、实时数仓模型与架构

如下图是实时数仓的模型,基本上都见过

下图是实时数仓平台的架构图

整个架构,分为资源层、存储层、引擎层、SQL 层、平台层和应用层。

六、流式导出与 OLAP 应用

1. 异构数据源的同步

如上图,是异构数据源的同步。数据会在不同的存储系统中交换,所以我们做了一个 Deltalink 的平台,把数据 N 对 N 的交换过程,抽象成 N 对 1 的交换过程。

我们也迭代改进了很多版本。

2. 第一版实现

第一版是基于 DataX (阿里开源)来做同步,包含工具平台层,调度层,执行层。

  • 工具平台层,对接用户,用来配置同步任务,配置调度,运维任务;
  • 调度层,负责任务的调度,管理任务状态管理,以及执行机的管理,这其中有非常多的额外工作都需要自己做;
  • 执行层,通过 DataX 进程,以及 Task 线程从源存储同步到目标存储。

但劣势也很明显,开源版的 DataX 是一个单机多线程的模型,当数据量非常大的时候,单机多线程是成为了瓶颈,限制了可扩展性;

然后在调度层,需要管理机器,管理同步的任务和状态,非常繁琐;

当调度执行机发生故障的时候,整个灾备都需要单独去做。

3. 第二版实现

在第二版中,改成了基于 Flink 同步的架构,看起来就清爽了很多。

工具平台层没有变,调度层的任务调度和执行机管理都交给 Yarn 去做。

调度层的任务状态管理,可以迁移到 Client 中去做。

基于 Flink 的 DeltaLink 的架构,解决了可扩展性问题,而且架构非常简单。

当把同步的任务拆细之后,可以分布式的分布到不同的 TaskManager 里去执行。

并且离线和实时的同步,都可以统一到 Flink 框架中去,这样离线和实时同步的 Source 和 Sink 组件都可以共用一套。

4. 基于 Flink 的同步架构关键设计

  1. 避免跨 TaskManager 的 Shuffle,避免不必要的序列化成本;Source 和 Sink 尽量在同一个 TaskManager;
  2. 务必设计脏数据收集旁路和失败反馈机制;数据同步遇到脏数据的时候,比如失败了 1% 的时候,直接停下来;
  3. 利用 Flink 的 Accumulators 对批任务设计优雅退出机制;数据传输完之后,通知下游数据同步完了;
  4. 利用 S3 统一管理 Reader/Writer 插件,分布式热加载,提升部署效率;很多传输任务都是小任务,而作业部署时间又非常长,所以需要要提前部署插件;

5. 基于 Flink 的 OLAP 生产平台

基于 Flink 做了 Deltalink ,数据导出的平台;

基于数据导出的平台,做了 OLAP 平台,对于资源,模型,任务和权限都做了管理。

七、 未来规划

经过多次迭代,把 Flink 用到了数据集成、数据处理、离线数据导出、OLAP 等场景,但事情还没有结束。

未来的目标,是要做到流批一体,把离线作业都迁移到 Flink 上来;

同时数据也要做到批流一体,这个很重要。如果数据仍然是两份,是两套 Schema 定义,那么不管如何处理,都需要去对数据,就不是真正的流批统一。

所以不管是计算还是存储,都使用 Flink,达到真正的流批一体。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 KK架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flink 助力美团数仓增量生产
摘要:本文由美团研究员、实时计算负责人鞠大升分享,主要介绍 Flink 助力美团数仓增量生产的应用实践。内容包括:
Spark学习技巧
2021/03/05
6770
Flink 助力美团数仓增量生产
数仓:Doris在美团的应用实践
美团外卖数据仓库技术团队负责支撑日常业务运营及分析师的日常分析,由于外卖业务特点带来的数据生产成本较高和查询效率偏低的问题,他们通过引入Apache Doris引擎优化生产方案,实现了低成本生产与高效查询的平衡。并以此分析不同业务场景下,基于Kylin的MOLAP模式与基于Doris引擎的ROLAP模式的适用性问题。希望能对大家有所启发或者帮助。
Freedom123
2024/03/29
8440
数仓:Doris在美团的应用实践
投入上百人、经历多次双11,Flink已经足够强大了吗?
采访嘉宾|王峰(莫问) 作者 | Tina 作为最活跃的大数据项目之一,Flink 进入 Apache 软件基金会顶级项目已经有八年了。 Apache Flink 是一款实时大数据分析引擎,同时支持流批执行模式,并与 Hadoop 生态可以无缝对接。2014 年,它被接纳为 Apache 孵化器项目,仅仅几个月后,它就成为了 Apache 的顶级项目。 对于 Flink 来说,阿里有非常适合的流式场景。作为 Flink 的主导力量,阿里从 2015 年开始调研 Flink,并于 2016 年第一次在搜
深度学习与Python
2023/03/29
6160
投入上百人、经历多次双11,Flink已经足够强大了吗?
B站基于Hudi+Flink打造流式数据湖的落地实践
上图展示了当前B站实时数仓的一个简略架构,大致可以分为采集传输层、数据处理层,以及最终的AI和BI应用层。为保证稳定性,数据处理层是由以实时为主,以离线兜底的两条链路组成,即我们熟知的批流双链路。
ApacheHudi
2023/09/04
1.4K0
B站基于Hudi+Flink打造流式数据湖的落地实践
实时数仓:实时数仓3.0的演进之路
传统意义上我们通常将数据处理分为离线数据处理和实时数据处理。对于实时处理场景,我们一般又可以分为两类,一类诸如监控报警类、大屏展示类场景要求秒级甚至毫秒级;另一类诸如大部分实时报表的需求通常没有非常高的时效性要求,一般分钟级别,比如10分钟甚至30分钟以内都可以接受。
Freedom123
2024/03/29
6970
实时数仓:实时数仓3.0的演进之路
农业银行湖仓一体实时数仓建设探索实践
在数字化转型驱动下,实时化需求日益成为金融业数据应用新常态。传统离线数仓“T+N”数据供给模式,难于满足“T+0”等高时效场景需求;依托Storm、Spark Streaming、Flink等实时计算框架提供“端到端”的实时加工模式,无法沉淀实时数据资产,存在实时数据复用性低、烟囱式垂直建设等不足。
ApacheHudi
2023/11/06
1.9K0
农业银行湖仓一体实时数仓建设探索实践
Flink Forward Asia 2020干货总结!
剩喜漫天飞玉蝶,不嫌幽谷阻黄莺。2020 年是不寻常的一年,Flink 也在这一年迎来了新纪元。
Datawhale
2021/01/07
2.5K0
Flink Forward Asia 2020干货总结!
美团点评基于 Flink 的实时数仓平台实践
摘要:数据仓库的建设是“数据智能”必不可少的一环,也是大规模数据应用中必然面临的挑战,而 Flink 实时数仓在数据链路中扮演着极为重要的角色。本文中,美团点评高级技术专家鲁昊为大家分享了美团点评基于 Apache Flink 的实时数仓平台实践。
程序员小强
2020/01/17
1.4K0
美团点评基于 Flink 的实时数仓平台实践
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
目前主流的数仓架构—— Lambda 架构,能够通过实时和离线两套链路、两套代码同时兼容实时数据与离线数据,做到通过批处理提供全面及准确的数据、通过流处理提供低延迟的数据,达到平衡延迟、吞吐量和容错性的目的。在实际应用中,为满足下游的即席查询,批处理和流处理的结果会进行合并。
王知无-import_bigdata
2023/09/18
9530
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
【实践案例分享】Apache Doris在美团外卖数仓中的应用实践
美团外卖数据仓库通过MOLAP+ROLAP双引擎模式来适配不同应用场景。MOLAP引擎使用了Apache Kylin。ROLAP我们经过综合考虑,选择了Apache Doris。本文将介绍Doris在美团外卖数仓的实践。
木东居士
2020/04/20
2.8K0
【实践案例分享】Apache Doris在美团外卖数仓中的应用实践
美团外卖实时数仓建设实践
导读:本文主要介绍一种通用的实时数仓构建的方法与实践。实时数仓以端到端低延迟、SQL标准化、快速响应变化、数据统一为目标。在实践中,我们总结的最佳实践是:一个通用的实时生产平台 + 一个通用交互式实时分析引擎相互配合同时满足实时和准实时业务场景。两者合理分工,互相补充,形成易于开发、易于维护、效率最高的流水线,兼顾开发效率与生产成本,以较好的投入产出比满足业务多样需求。
Lenis
2020/11/10
7580
美团外卖实时数仓建设实践
美团点评基于 Flink 的实时数仓建设实践
近些年,企业对数据服务实时化服务需求日益增多。本文整理了常见实时数据组件的性能特点和适用场景,介绍了美团如何通过 Flink 引擎构建实时数据仓库,从而提供高效、稳健的实时数据服务。此前我们美团技术博客发布过一篇文章《流计算框架 Flink 与 Storm 的性能对比》,对 Flink 和 Storm 两个引擎的计算性能进行了比较。本文主要阐述使用 Flink 在实际数据生产上的经验。
美团技术团队
2019/03/22
1.3K0
美团点评基于 Flink 的实时数仓建设实践
美团外卖离线数仓建设实践
导读:美团外卖数据仓库主要是收集各种用户终端业务、行为数据,通过统一口径加工处理,通过多种数据服务支撑主题报表、数据分析等多种方式的应用。数据组作为数据基础部门,支持用户端、商家端、销售、广告、算法等各个团队的数据需求。本文主要介绍美团外卖离线数仓的历史发展历程,在发展过程中碰到的痛点问题,以及针对痛点做的一系列优化解决方案。
Spark学习技巧
2021/03/05
1.7K0
美团外卖离线数仓建设实践
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
目前主流的数仓架构—— Lambda 架构,能够通过实时和离线两套链路、两套代码同时兼容实时数据与离线数据,做到通过批处理提供全面及准确的数据、通过流处理提供低延迟的数据,达到平衡延迟、吞吐量和容错性的目的。在实际应用中,为满足下游的即席查询,批处理和流处理的结果会进行合并。
ApacheHudi
2023/09/04
2.2K0
字节跳动基于 Apache Hudi 的湖仓一体方案及应用实践
数据湖|Flink + Iceberg 全场景实时数仓的建设实践
摘要:Apache Flink 是目前大数据领域非常流行的流批统一的计算引擎,数据湖是顺应云时代发展潮流的新型技术架构,以 Iceberg、Hudi、Delta 为代表的解决方案应运而生,Iceberg 目前支持 Flink 通过 DataStream API /Table API 将数据写入 Iceberg 的表,并提供对 Apache Flink 1.11.x 的集成支持。
大数据技术架构
2021/08/25
4.7K0
数据湖|Flink + Iceberg  全场景实时数仓的建设实践
美团外卖实时数仓方案整理
实时数仓以端到端低延迟、SQL标准化、快速响应变化、数据统一为目标。美团外卖数据智能组总结的最佳实践是:一个通用的实时生产平台跟一个通用交互式实时分析引擎相互配合,同时满足实时和准实时业务场景。两者合理分工,互相补充,形成易开发、易维护且效率高的流水线,兼顾开发效率与生产成本,以较好的投入产出比满足业务的多样性需求。
大数据流动
2022/05/10
8420
美团外卖实时数仓方案整理
湖仓一体电商项目(一):项目背景和架构介绍
湖仓一体实时电商项目是基于某宝商城电商项目的电商数据分析平台,本项目在技术方面涉及大数据技术组件搭建,湖仓一体分层数仓设计、实时到离线数据指标分析及数据大屏可视化,项目所用到的技术组件都从基础搭建开始,目的在于湖仓一体架构中数据仓库与数据湖融合打通,实现企业级项目离线与实时数据指标分析。在业务方面目前暂时涉及到会员主题与商品主题,分析指标有用户实时登录信息分析、实时浏览pv/uv分析、实时商品浏览信息分析、用户积分指标分析,后续还会继续增加业务指标和完善架构设计。
Lansonli
2022/07/30
1.4K0
湖仓一体电商项目(一):项目背景和架构介绍
美团基于 Flink 的实时数仓平台建设新进展
摘要:本文整理自美团实时数仓平台负责人姚冬阳在 Flink Forward Asia 2021 实时数仓专场的演讲。主要内容包括:
从大数据到人工智能
2022/06/27
1.2K0
美团基于 Flink 的实时数仓平台建设新进展
专治数仓疑难杂症!美团点评 Flink 实时数仓应用经验分享
摘要:本文根据 Apache Flink 系列直播整理而成,由美团点评数据系统研发工程师黄伟伦老师分享。主要内容如下:
大数据技术架构
2020/07/03
9250
专治数仓疑难杂症!美团点评 Flink 实时数仓应用经验分享
干货 | 携程酒店实时数仓架构和案例
当前,企业对于数据实时性的需求越来越迫切,因此需要实时数仓来满足这些需求。传统的离线数仓的数据时效性通常为 T+1,并且调度频率以天为单位,无法支持实时场景的数据需求。即使将调度频率设置为每小时,也仅能解决部分时效性要求较低的场景,对于时效性要求较高的场景仍然无法优雅地支撑。因此,实时数据使用的问题必须得到有效解决。实时数仓主要用于解决传统数仓数据时效性较低的问题,通常会用于实时的 OLAP 分析、实时数据看板、业务指标实时监控等场景。
携程技术
2023/02/28
1.3K0
干货 | 携程酒店实时数仓架构和案例
推荐阅读
相关推荐
Flink 助力美团数仓增量生产
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档