Flink 助力美团数仓增量生产

简介: 本文由美团研究员、实时计算负责人鞠大升分享,主要介绍 Flink 助力美团数仓增量生产的应用实践。内容包括:1、数仓增量生产;2、流式数据集成;3、流式数据处理;4、流式 OLAP 应用;5、未来规划。

一、数仓增量生产

1.美团数仓架构

先介绍一下美团数仓的架构以及增量生产。如下图所示,这是美团数仓的简单架构,我把它叫做三横四纵。所谓三横,第一是贯穿全链路的元数据以及血缘,贯穿数据集成、数据处理、数据消费、以及数据应用的全过程链路。另外一块贯穿全链路的是数据安全,包括受限域的认证系统、权限系统、整体的审计系统。根据数据的流向,我们把数据处理的过程分为数据集成、数据处理、数据消费、以及数据应用这 4 个阶段。

在数据集成阶段,我们对于公司内部的,比如说用户行为数据、日志数据、DB 数据、还有文件数据,都有相应的集成的系统把数据统一到我们的数据处理的存储中,比如说 Kafka 中。
在数据处理阶段,分为流式处理链路、批处理链路以及基于这套链路的数仓工作平台(万象平台)。生产出来的数据,经过 Datalink 导入到消费的存储中,最终通过应用以不同的形式呈现出来。

我们目前在 Flink 上面应用比较广泛的地方,包括从 Kafka 把数据导到 Hive,包括实时的处理,数据导出的过程。今天的分享就集中在这些方面。

2.美团 Flink 应用概况

美团的 Flink 目前大概有 6000 台左右的物理机,支撑了 3 万左右的作业。我们消费的 Topic 数在 5 万左右,每天的高峰流量在 1.8 亿条每秒这样的水平上。

3.美团 Flink 应用场景

美团 Flink 主要应用的场景包括四大块。

  • 第一,实时数仓、经营分析、运营分析、实时营销。
  • 第二,推荐、搜索。
  • 第三,风控、系统监控。
  • 第四,安全审计。

4.实时数仓 vs 数仓增量生产

接下来我要引入增量生产的概念。离线数仓关注的三块需求,第一个就是时效性。第二个就是质量,产出的数据的质量。第三个就是成本。

关于时效性,有两个更深层次的含义,第一个叫做实时,第二个叫准时。并不是所有的业务需求都是实时的,很多时候我们的需求是准时。比如做经营分析,每天拿到相应的昨天的经营数据情况即可。实时数仓更多的是解决实时方面的需求。但是在准时这一块,作为一个企业,更希望在准时跟成本之间做一个权衡。所以,我把数仓的增量生产定义为对离线数仓的一个关于准时跟成本的权衡。另外,数仓增量生产解决比较好的一个方面是质量,问题能够及时发现。

5.数仓增量生产的优势

数仓增量生产的优势有两点。

  • 能够及时发现数据质量问题,避免 T+1 修复数据。
  • 充分利用资源,提前数据产出时间。

如下图所示,我们期望做的实际上是第二幅图。我们期望把离线的生产占用的资源降低,但同时希望它的产出时间能够提前一步。

二、流式数据集成

1.数据集成 V1.0

我们来看一下流式数据集成的第一代。当数据量非常小以及库非常少的时候,直接做一个批的传输系统。在每天凌晨的时候把相应的 DB 数据全部 load 一遍,导到数仓里面。这个架构优势是非常简单,易于维护,但是它的缺点也非常明显,对于一些大的 DB 或者大的数据,load 数据的时间可能需要 2~3 个小时,非常影响离线数仓的产出时间。

2.数据集成 V2.0

基于这个架构,我们增加了流式传递的链路,我们会有经过流式传输的采集系统把相应的 Binlog 采集到 Kafka,同时会经过一个 Kafka 2 Hive 的程序把它导入到原始数据,再经过一层 Merge,产出下游需要的 ODS 数据。

数据集成 V2.0 的优势是非常明显的,我们把数据传输的时间放到了 T+0 这一天去做,在第二天的时候只需要去做一次 merge 就可以了。这个时间可能就从 2~3 个小时减少到一个小时了,节省出来的时间是非常可观的。

3.数据集成 V3.0

在形式上,数据集成的第三代架构前面是没什么变化的,因为它本身已经做到了流式的传输。关键是后面 merge 的流程。每天凌晨 merge 一个小时,仍然是非常浪费时间资源的,甚至对于 HDFS 的压力都会非常大。所以在这块,我们就迭代了 HIDI 架构。

这是我们内部基于 HDFS 做的。

4.HIDI

我们设计 HIDI,核心的诉求有四点。第一,支持 Flink 引擎读写。第二,通过 MOR 模式支持基于主键的 Upsert/Delete。第三,小文件管理 Compaction。第四,支持 Table Schema。

基于这些考虑,我们来对比一下 HIDI,Hudi 和 Iceberg。

HIDI 的优势包括:

  • 支持基于主键的 Upsert/Delete
  • 支持和 Flink 集成
  • 小文件管理 Compaction

劣势包括:不支持增量读。

Hudi 的优势包括:

  • 支持基于主键的 Upsert/Delete
  • 小文件管理 Compaction

劣势包括:

  • 写入限定 Spark/DeltaStreamer
  • 流读写支持 SparkStreaming

Iceberg 的优势包括: 支持和 Flink 集成。

劣势包括:

  • 支持基于 Join 的 Upsert/Delete
  • 流式读取未支持。

5.流式数据集成效果

如下图所示,我们有数据产生,数据集成,ETL 生产三个阶段。把流式数据集成做到 T+0,ETL 的生产就可以提前了,节省了我们的成本。

三、流式数据处理

1.ETL 增量生产

我们来讲一下 ETL 的增量生产过程。我们的数据从前面进来,到 Kafka 之后,有 Flink 实时,然后到 Kafka,再到事件的服务,甚至到分析的场景中,这是我们自己做的分析链路。

下面是批处理的一个链路,我们通过 Flink 的集成,集成到 HDFS,然后通过 Spark 去做离线生产,再经过 Flink 把它导出到 OLAP 的应用中。在这样的架构中,增量的生产实际上就是下图标记为绿色的部分,我们期望用 Flink 的增量生产的结构去替换掉 Spark。

2.SQL 化是 ETL 增量生产的第一步

这样的一个架构有三个核心的能力。

  • 第一, Flink 的 SQL 的能力要对齐 Spark。
  • 第二, 我们的 Table Format 这一层需要能够支持 Upsert/Delete 这样的主键更新的实时操作。
  • 第三, 我们的 Table Format 能够支持全量和增量的读取。

我们的全量用于查询和修复数据,而我们的增量是用来进行增量的生产。SQL 化是 ETL 增量生产的第一步,今天分享的主要是说我们基于 Flink SQL 做的实时数仓平台对这一块的支持。

3.实时数仓模型

如下图所示,这是实时数仓的模型。业界应该都看过这样的一个模型。

4.实时数仓平台架构

实时数仓的平台架构,分为资源层、存储层、引擎层、SQL 层、平台层、还有应用层。在这里重点强调两点。

  • 第一,是对于 UDF 的支持。因为 UDF 是弥补算子能力中的非常重要的一环,我们希望在这里面做的 UDF 能够加大对于 SQL 能力的支持。
  • 第二,是在这个架构里面只支持了 Flink Streaming 的能力,我们并没有去做 Flink 的批处理的能力,因为我们设想未来所有的架构都是基于 streaming 去做的,这跟社区的发展方向也是一致的。

5.实时数仓平台 Web IDE

这是我们数仓平台的一个 Web IDE。在这样的一个 IDE,我们支持了一个 SQL 的建模的过程,支持了 ETL 的开发的能力。

四、流式 OLAP 应用

1.异构数据源同步

下面看关于流式的导出跟 OLAP 的应用这一块。如下图所示,是异构数据源的同步图。业界有很多开源的产品做这一块。比如说,不同的存储里面,数据总是在其中进行交换。我们的想法是做一个 Datalink 这样的一个中间件,或者是中间的平台。然后我们把 N 对 N 的数据交换的过程,抽象成一个 N 对 1 的交换过程。

2.基于 DataX 的同步架构

异构数据源的第一版是基于 DataX 来做同步的架构。在这套架构里面,包含了工具平台层、调度层、执行层。

  • 工具平台层的任务非常简单,主要是对接用户,配置同步任务,配置调度,运维。
  • 调度层负责的是任务的调度,当然对于任务的状态管理,以及执行机的管理,很多的工作都需要我们自己去做。
    在真正的执行层,通过 DataX 的进程,以及 Task 多线程的一个形式,真正执行把数据从源同步到目的地。
  • 在这样的一个架构里面,发现两个核心的问题。第一个问题就是扩展性的问题。开源的单机版的 DataX 是一个单机多线程的模型,当我们需要传输的数据量非常大的时候,单机多线程模型的可扩展性是很大的问题。第二个问题在调度层,我们需要去管理机器、同步的状态、同步的任务,这个工作非常繁琐。当我们的调度执行机发生故障的时候,整个灾备都需要我们单独去做这块的事情。

3.基于 Flink 的同步架构

基于这样的架构,我们把它改成了一个 Flink 的同步的架构。前面不变,还是工具平台层。在原有的架构里面,我们把调度层里面关于任务调度和执行机的管理这一块都交给了 Yarn 去做,这样我们就从中解脱出来了。第二个,我们在调度层里面的任务状态管理可以直接迁移到 cluster 里面去。

基于 Flink 的 Datalink 的架构优势非常明显。

  • 第一, 可扩展性问题得到解决了,同时架构也非常简单。现在当我们把一个同步的任务拆细之后,它在 TaskManager 里面可以扩散到分布式的集群中。
  • 第二, 离线跟实时的同步任务,都统一到了 Flink 框架。我们所有同步的 Source 和 Sink 的主键,都可以进行共用,这是非常大的一个优势。

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

我们看一下基于 Flink 的同步架构的关键设计,这里总结的经验有四点。

  • 第一,避免跨 TaskManager 的 Shuffle,避免不必要的序列化成本;
  • 第二,务必设计脏数据收集旁路和失败反馈机制;
  • 第三,利用 Flink 的 Accumulators 对批任务设计优雅退出机制;
  • 第四,利用 S3 统一管理 Reader/Writer 插件,分布式热加载,提升部署效率。

4.基于 Flink 的 OLAP 生产平台

基于 Flink 我们做了 Datalink 这样的一个数据导出的平台,基于 Datalink 的导出平台做了 OLAP 的生产平台,在这边除了底层的引擎层之外,我们做了平台层。在这上面,我们对于资源、模型、任务、权限,都做了相应的管理,使得我们进行 OLAP 的生产非常快捷。

这是我们的 OLAP 生产的两个截图。一个是对于 OLAP 中的模型的管理,一个是对于 OLAP 中的任务配置的管理。

五、未来规划

经过相应的迭代,我们把 Flink 用到了数据集成、数据处理、离线数据的导出,以及 OLAP 生产的过程中。我们期望未来对于流批的处理能够是统一的,希望数据也是流批统一的。我们希望,不管是实时的链路,还是增量处理的链路,在未来数据统一之后,统一用 Flink 处理,达到真正的流批一体。

image.png

社区二维码.png

 

作者:阿里云实时计算Flink

原文链接

本文为阿里云原创内容,未经允许不得转载

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP与MySQL外文文献译文和原文_读懂外文文献的秘诀在这里丨49周新闻

搜狗AI合成主播雅妮为你带来【2020年第49周】搜狗新闻联播全 文01搜狗翻译「文档翻译」功能新增“医疗”和“金融”专业术语翻译问君能有几多愁,文献查询挠破头。我本无心空对月,外文翻译更加虐。还在因为如何正确翻译文献资料发愁的朋友,请你…

微软云打印将直接与 OneDrive 集成;全球 90 多家组织敦促苹果放弃引入”儿童安全”功能计划……...

NEWS本周新闻回顾百度发布无人车出行服务平台“萝卜快跑”百度发布无人车出行服务平台“萝卜快跑”。截至2021年上半年,百度Apollo自动驾驶出行服务已累计接待乘客超过40万人次,测试里程超过1400万公里,自动驾驶专利数量超过2900件&#xff0…

「直播实录」中英数据库专家谈:数据库的过去、未来和现在

简介: 数据库是什么?未来的数据会被存在DNA里?数据库里的数据湖是什么? 1月16日,扫地僧做了一场直播,请到我的同事——数据库资深专家封神,和来自帝国理工的高级讲师Thomas Heinis(托…

html dom 知乎,知乎登录页 - 粒子运动效果

简介由于群友的号召,清明时节得空,所以仿知乎登录页面,基于canvas实现了一个粒子(Particle)随机运动的动画效果。DemoDemo源码独立包安装 npm i zhihu-particle --save #使用npm安装复制代码 yarn add zhihu-particle #使用yarn安装复制代码基…

alm系统的使用流程_支持MBSE的企业信息管理系统发展与启示

导读:本文介绍了模型管理与MBSE、产品生命周期管理(PLM)的概念及其之间的关系,分析了不同行业的模型管理现状,提出了模型管理的解决方案与技术方向,最后给出了建设企业信息管理系统的建议,以期为企业信息管理系统支持M…

如何快速部署一个Elasticsearch集群?

作者:无敌码农 来源:无敌码农今天的文章给大家介绍下Elasticsearch这一目前在“搜索”和“分析”领域使用十分广泛的技术组件。并演示如何快速构建一个Elasticsearch集群。Elasticsearch概述Elasticsearch是一款非常强大的开源“搜索”及“分析”引擎。除…

对话阿里云李飞飞:下一代企业级数据库6大技术方向

简介: 对话李飞飞,不仅仅是一次简单的采访,对老鱼来说,也是一种收获,因为,在数据库领域李飞飞拥有敏锐的触角,对数据库发展趋势有着独到的见解和洞察。 题图:DTCC 2020大会专访合影&…

云企业网CEN-TR打造企业级私有网络

简介: 为了满足企业大规模、多样化的组网和网络管理需求,云企业网(CEN)提出了转发路由器TR(Transit Router)的概念。在每个地域内创建一个转发路由器,可以连接大量VPC、VBR,作为您在…

孩子不念书了学计算机,李玫瑾教授:孩子是不是学习的料不用等长大,上幼儿园就能看出来...

读书是通往成功的一个捷径,但却并非所有人都能走这个捷径。虽然家长都不信,也不想相信,但有些孩子就是不适合学习,如果走一些其他的路可能还会有不一样的人生,但要是在学习这一条路上一条走到黑,未来一定不…

这个数据仓库,竟然把淘宝和京东干翻了。。

守着金山讨饭吃,乍听有些不可思议,但不少企业正遭遇这样的窘况。大数据被誉为“新石油”,如何管理并洞悉数据的价值,是企业未来发展的核心竞争力。进入大数据时代,数据规模与日俱增。另一方面,数据仓库的市…

如何做好性能压测丨压测环境设计和搭建

简介:一般来说,保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候,即便是压测环境和生产环境有很细微的差别,都有可能导致整个压测活动评测出来的结果不准确。 一般来说,保证执行性能…

疫情之下的科技普惠:阿里云科技驱动中小企业数字化

2020 年到2021年,一场疫情给全球经济发展带来了重创。在受到疫情影响之时,各行各业尽展众相,一些企业进行着自我变革;一些企业还未来得及自救,却已被淘汰。更受疫情冲击的,是各行各业中的中小型企业&#x…

一则有趣的机场广告

作者:小枣君来源:鲜枣课堂前几天路过深圳宝安机场时,有一个大屏广告,成功地吸引了我的注意。我把它拍了下来,如图所示。广告中,一位商务人士从胸前口袋里,掏出了一个银灰色的小盒子。广告语写着…

3+1保障:高可用系统稳定性是如何炼成的?

简介: 影响系统稳定性的架构设计有哪些?一个可持续保障的研发运维流程机制是怎样的?如何培养团队技术人员的意识和能力?本文作者以团队技术负责人的视角,从三大技术要素和一个业务要素,分享在稳定性建设上的…

从KPI到OKR,高阶产品人如何推动业务高速增长

简介: 不管是核心大目标,还是O(Objectives),或者北极星指标,奇妙等式等等,最后都需要核心组织协同方式来推动整个目标聚焦以及过程的落地。 作为产品经理人,相信很多人都遇到过以下的…

有没有五金产品展开计算机软件,花样算法猫腻不断 全屋定制这本账真心不好算...

花样算法猫腻不断 全屋定制这本账真心不好算人民网2017-03-14 09:50[摘要]选材差不多、尺寸也差不多,在不同定制品牌之间,不要说终的产品价格相差多少,就光中间的计价过程估计就能让人头疼好一阵子了。说到定制家具产品的账要怎么算。有过消费…

从Hadoop到云原生,谈如何消除程序员35岁危机

作者:小智 来源:智领云科技前言35岁这个“职场枯荣线”,确实真实存在。不知从何时起,很多企业将入职门槛限定在35岁以下,“35岁”已然成为职场中年的魔咒。尤其是程序员这个群体,年龄绝对是最难以隐忍的痛点…

Serverless Kubernetes:理想,现实与未来

简介: 当前 Serverless 容器的行业趋势如何?有哪些应用价值?如果 Kubernetes 天生长在云上,它的架构应该如何设计?Serverless 容器需要哪些基础设施?阿里云容器服务产品负责人易立及阿里云 Serverless Kube…

这只猫在云端定居了?边缘计算在天猫精灵云应用上的落地实践

IoT的概念早已飞入寻常百姓家,在你我的日常生活中发挥着“智能”作用。比如,智能家居、智慧照明、GPS 导航、手机计步器等。未来,随着用户和技术的延伸和拓展,物联网的信息交换和通信价值将会被继续放大。 那么问题来了&#xff…

Gartner发布2021年新兴技术成熟度曲线,三大新兴技术趋势主题

Gartner通过信任、增长和变革三大新兴技术趋势主题发布推动创新的关键新兴技术。需特别关注非同质化通证、量子机器学习、生成式人工智能、同态加密以及组装式应用和网络等关键技术 编辑 | 宋慧 供稿 | Gartner 头图 | 付费下载于视觉中国 根据全球领先的信息技术研究和顾问公…