܄

流批一体时代加速到来,阿里引领Flink国际社区持续创新升级

【数据猿导读】 本月,知名开源大数据引擎Flink社区对外透露,2022年阿里巴巴、腾讯、字节跳动等中国企业贡献了超过一半的代码,其中阿里巴巴对Flink核心代码贡献最大,中国开发者已经成为Flink全球化社区的中坚力量。

流批一体时代加速到来,阿里引领Flink国际社区持续创新升级

本月,知名开源大数据引擎Flink社区对外透露,2022年阿里巴巴、腾讯、字节跳动等中国企业贡献了超过一半的代码,其中阿里巴巴对Flink核心代码贡献最大,中国开发者已经成为Flink全球化社区的中坚力量。

Flink是全球范围内被广泛使用的开源大数据计算引擎, 数据显示,Flink的Github Star数和贡献者人数每年以超30%的速度增长,Github Star数超2万个,上千名贡献者(contributors),月下载量峰值突破1400万次,连续两年蝉联 Apache基金会财年报告最活跃项目。

流批一体时代阿里_Flink国际社区-1流批一体时代阿里_Flink国际社区-2

来源:Flink

作为分布式流数据流引擎,流计算引擎内核是Flink的核心竞争力之一,Flink不断进行加速优化以及提升容错能力,而其另一个核心竞争力“流批一体”则在近年来备受关注。

什么是流批一体?我们知道实时生成流数据,离线生成批数据,如采用不同系统处理,很容易产生数据延迟、数据不一致等问题,流批一体模型将流数据和批数据集成到同一个处理系统中,实现更加实时、高效、灵活的数据处理,同时减少不必要的系统复杂性。

随着大数据在电商、金融、物联网、电信等领域的深入应用,实时数据已经成为必选项,处理好“流批一体”保证批流数据一致,已成为必答题,经历过数个双11,活跃在100多家企业,目前已是全球范围内大数据实时计算业界事实标准的Flink正在解答这个问题。

阿里引领Flink迅速崛起,成为事实上的行业标准

Flink 最初是由德国柏林工业大学的几个博士生和研究生从学校开始做起来的大数据研究项目,2014年,其核心成员在此基础上开发了 Flink,同时将 Flink 计算的主流方向定位为Streaming(流式计算),并在同年将 Flink 捐赠给 阿帕奇软件基金会。一年后,Flink即成为 Apache 的顶级项目。

后来Flink社区又经过九年的发展,持续保持流式计算的领先地位,有超过20万开发者关注、超过100家国内外知名公司参与代码贡献,成为了全球范围内实时流计算的事实标准,可以说在全球的各个行业,只要大家想到实时流计算,基本上都会选择 Apache Flink。

而随着Flink 国际化生态不断繁荣发展的过程中,中国开发者在其中发挥了越来越大的作用,根据OSS Insight 网站的数据统计,目前Flink 社区在 Github 上产生的 Pull Request 有 45% 是来自中国的开发者。

2020年Flink中国社区诞生(https://flink-learning.org.cn/),2022年,众多国内开发者在Flink 社区公众号上发布了文章, Flink 社区公众号的订阅人数亦超过 6万名,今年还推出了 Apache Flink 官方视频号。

Flink近年来在中国的繁荣与引领全球的发展,这一切与阿里巴巴在其中的推动作用是分不开的。最初Flink是在搜索推荐中进入阿里开发者的视线,后来其在走向巅峰的“双11”中发挥越来越大的作用,能够处理万亿级的数据,开始服务全集团以及阿里云。2019年,阿里巴巴一举收购了Flink初创公司Data Artisans(后更名为 Ververica),并开源Blink、将其回馈Flink社区,同时也将阿里向国际化迈进重要一步。

流批一体时代阿里_Flink国际社区-3

来源:阿里巴巴

Flink 诞生之后的几年,就遇到一个瓶颈,早期开发 Flink 的时候,都要写 Java 程序,通过 DataStream的API 写 Java 代码,这对于多数数据分析师来说有一定门槛,在数据分析师的世界里,标准的语言是 SQL,这也是当时 Flink 难以推广的一个原因。后来,阿里将自己内部积累的 Blink SQL 贡献给了 Flink 社区,从此 Flink 社区具有一套比以前快了十倍的 Stream SQL,因此大幅降低了开发门槛,这也是最近两三年Flink加速普及的一个原因。

Alink 是阿里巴巴机器学习算法团队从 2017 年开始基于Flink的分布式、批流一体研发的新一代机器学习算法平台,结合阿里巴巴的业务场景,提供丰富的算法组件库和便捷的操作框架,开发者可以一键搭建覆盖数据处理、特征工程、模型训练、模型预测的算法模型开发全流程。2019年阿里巴巴将其在Flink上开源,宣告了 Flink 正式切入 AI 领域,2020年,Alink新增数十个开源算法,2021年,阿里继续贡献30多个经典的机器学习算法,覆盖常见的特征工程场景。

2020 年,阿里将 Blink 内核合并到 Flink 内核中,全面支持开源社区的发展。2020年的双11,Flink 包揽阿里集团内部所有的全链路实时化解决方案,规模达到百万级 CPU Core。并且在资源没有增长的情况下,提高了一倍业务能力,实时数据处理峰值更是达到 40 亿条记录/秒的新高。

Flink Forward Asia 2022大会上,阿里再次表态:目前,“阿里巴巴自用的技术”、“向阿里云客户提供的技术”、“向社区开源的技术”是三位一体的,在阿里及其他企业场景中形成个性化、系统化的需求,与开源社区关注的点是互补的,阿里巴巴可以将自己的最佳实践贡献到开源社区,让社区的应用性和大规模企业使用的稳定性、弹性等等有很好的结合。

2021年7月,国际权威咨询机构Forrester发布的全球数据流分析报告显示,阿里云凭借领先的实时计算产品Ververica、大规模实践和开发者友好度,挺进“强劲表现者”象限,刷新了国内公司在数据流计算领域的最好成绩。目前,Flink 已经成为了全球范围内实时流计算的事实标准,阿里巴巴在Flink的贡献达到10.5%,也是Flink事实上最大的贡献者。

流批一体时代阿里_Flink国际社区-4                     

来源:OSS Insight

Flink开启“流批一体”进化论

2020年,Flink 在阿里的发展进入新阶段,从流式计算进阶到全链路流批一体化。

流批一体并非是新概念,在2015年就已经出现,但长期停留在理论层面。流批一体的初衷是让开发人员能够用同一套接口实现大数据的流计算和批计算,进而保证处理过程与结果的一致性。实际这个需求是长期存在的,举例而言,同一家券商,既要跑实时的股票交易,也要处理离线的财报数据,有很多计算是需要叠加两类数据的结果,比如像市盈率 = 市值 / 净利润,市值是实时,净利润一般就是离线。

而流批一体近年来的迅速推进部分得益于电商如火如荼的发展,让落地“流批一体”的优先级迅速得到提高。像一个典型的大促活动如“双11”,运营小二需要通过实时数据(当前的订单交易)和历史数据(昨天的订单交易)进行不同维度、不同时间周期的比对,从而对当前的活动情况作出判断,这些数据是业务决策的重要判断依据。

尽管当时天猫已经上了SQL,增强了实时数据的分析能力,用户仍要同时维护两条数据链路:一套是基于批处理技术,在每天晚上计算出的离线数据报表,一套是基于流处理技术算出当天的实时数据报表,然后针对实时和历史数据进行对比分析。从架构来看,在实时链路上,Flink 需要将数据写入 Kafka 等流式存储中,在离线链路上,Flink 往往要将数据写入到 Hive/Iceberg/Hudi 等批式存储中,两条存储链路是割裂的,造成较大的管理难度。

流批一体时代阿里_Flink国际社区-5

只有SQL还无法解决数据层割裂问题,来源:Flink Forward Asia 2022

运营或者数据分析人员需要的是一个能够横跨离线和实时的数据系统或者SQL,他们仅仅只需要关注的是业务上面的逻辑,而不需要去关注底层的数据是流还是批的执行模式。

SQL 只能够解决计算层的一些体验问题,即使 Flink 具备流批一体 SQL 的能力,能够实现全量增量开发一体化的体验,但它依然没有办法解决存储层割裂的问题,而阿里正在引领Flink开启的进化,其核心就是通过 Flink 流批一体的 SQL 和流批一体的存储,构建一套真正一体化体验的流式数仓 - Streaming Data Warehouse。

在 Streaming Data Warehouse 新的理念和形态中,可以保证所有的数据端到端都可以实时流动;整个全链路的开发过程中,用户都可以有全增量一体化的开发体验,并且有统一的数据存储和管理体系。

阿里巴巴开源委员会副主席、阿里云开源大数据平台负责人、Flink中文社区发起人王峰表示,如果要去做下一代的 Streaming Data Warehouse 架构。第一步要完善的就是流批一体存储。目前在开源生态中还没有一款真正能够实现高性能流读流写、批读批写的流批一体存储。因此, Flink 社区去年推出了全新子项目 Table Store(现已更名为Paimon,以下用Paimon替代),并在近期升级为Apache孵化器项目,它的定位就是实现流批一体的存储能力。

负责Paimon(原Table Store)项目的阿里巴巴高级技术专家李劲松谈到,存储在这个架构中主要有三个作用:

1、消息队列。因为全链路是流起来的,存储本身要做一个消息队列,可流写、可流读,需要有一定的顺序性。

2、沉淀数据。沉淀的历史数据需要要面向各生态计算引擎,做到可分析。沉淀数据之后,这部分数据应该被管理。

3、存储需要增强流计算,让流计算变得更简单,解决流计算的难题。

2022年,阿里在Flink发起Paimon项目,实现了流批一体的存储能力,帮助 Flink 从 Streaming Computing(流式计算)走向 Streaming Data Warehouse(流式数仓)。

Paimon的设计完全遵循现在新一代存算分离的理念,可以把数据存储在 HDFS 或者主流云存储上。它的核心存储格式是由 Lake Store 和 Log Store 两部分组成,可以实现高性能的流读流写、批读批写,支持在流模式与批模式下读写大规模数据集;支持秒级数据新鲜度的批查询和OLAP查询;支持消费与产生增量数据,可作为传统与流式数仓的各级存储。除了默认对接 Flink 之外,它也能对接 Spark、Hive、Trino 等主流的开源计算引擎。

流批一体时代阿里_Flink国际社区-6

来源:Flink Forward Asia 2022

在Flink Forward Asia 2022大会上王峰现场演示了Streaming Data Warehouse的Demo,我们看到,在一个订单的模拟环境下,有两张带有实时数据的事实表,主订单表和子订单表,也有两张离线的维度表,用户维表和国家维表,利用Paimon,系统可以形成一张宽表,运营人员可以对明细表按年和国家进行汇总,计算出 GMV 金额,也能对国家维表进行字段更新,对于使用者来说,是无感的,同时又是高效的。

在更大的数据测试中,Paimon亦表现出良好的效果。TPC-H是数据领域公认的测试集,阿里测试人员在TPC-H中生成6000 万条订单数据,模拟业务的真实状况,然后利用Flink CDC做数据同步,将MySQL的数据同步到数据湖仓表中,一条链路将它写入到Apache Hudi 里,一条链路写入到Paimon。结果显示,Paimon明显领先了Hudi的更新能力。在数据查询的性能上明显领先了Hudi的MOR模式,比较接近COW模式。

流批一体时代阿里_Flink国际社区-7

Flick Paimon对比测试结果,来源:Flink Forward Asia 2022

“Flink 之所以能够成为新一代流计算引擎的关键点在于,它是一款有状态的流计算,除了低延迟、高吞吐的流计算能力,它能将流计算和状态存储进行有机融合,从而在框架层支持整个流计算状态的精准数据一致性。”王峰如是说。

Flink将带领“流批一体”去向何方

流批一体的进化还没有结束,解决存储问题对于流批一体而言,迈出了坚实的一步。流批一体需要解决的问题不仅仅是存储问题,还需要解决数据处理模型、算法、实时性、可扩展性和容错性等多个问题,以实现高效、高可靠、高灵活的数据处理。

大数据架构的各个环节,都面临着流批一体的问题,如数据接入层流批一体:离线与实时是否使用统一数据采集方式;计算逻辑层流批一体:流与批处理是否使用统一 SQL 语法或者 ETL 组件;计算引擎层流批一体:流与批使用同一套计算引擎,从根本上避免同一个处理逻辑流批两套代码问题。

提升Flink流式数仓的用户体验,也需要Flink生态的各个公司共同努力。像Paimon不单有阿里巴巴的参与,字节跳动等一些公司也参与了项目的共建。另外我们看到像快手、京东、数禾、Shopee等公司在FFA大会上都分享了各自的经验。

同时,流式数仓也是一个系统工程,不只是单一的组件,牵一发动全身,也要靠Flink 的整体提升,并能够在云原生、人工智能等领域与新兴场景有效结合起来。阿里巴巴主导下的Flink近年来构建的开源创新项目有:

● 开源 Flink CDC 项目,填补了 Flink 对接和处理数据库变更数据的空白,为 Flink 打开了数据库数据实时同步、数据库数据实时加工等新场景。目前 Flink CDC 项目的 GitHub star 已有 3500 多,并在国内获得了广泛的落地,并吸引了 Decodable、Cloudera,腾讯云等海内外知名云服务商集成。

● 开源 Flink Remote Shuffle 项目,用来解决 Flink 大规模批处理作业的稳定性问题。

● 发起Flink ML 项目,提供机器学习API和基础设施函数库,简化机器学习工作管线构建工作。

王峰表示,后续 Flink 将会对整个状态存储管理体系进行更大的升级,变成一个彻底的存算分离架构来适应云原生环境。“我们希望所有的状态数据全部都原生在 HDFS 或者云存储之上,本地磁盘和内存只是状态数据的缓存加速层,构建一套体系化的 Tiered State Backend 系统。”

云原生大背景下,Flink的部署模式从静态standalone模式演化到主动模式,再到适应性模式。Flink 可以像云上其他应用一样根据所给的资源,通过改变自身拓扑结构来动态调整运行。

对于最近热议的AIGC领域,不只是离线的知识,也将涉及到大量实时数据的计算,像新闻、股票信息。流批一体技术可以将实时数据和历史数据统一存储和处理,使得类似ChatGPT的产品可以在同一平台上进行数据分析、建模和训练。同时,流批一体还可以提升数据的实时处理和分析能力,可以让 ChatGPT们更快地响应用户的需求,提高交互效率。

在两年前,阿里就开源了AI Flow。AI Flow是大数据及 AI 的处理流程平台,在 AI Flow 中定义不同数据之间的关系以及元数据格式等,就能够非常方便地搭建一套大数据及 AI 处理的流程。同年,推出大数据与 AI 一体化流程管理解决方案Flink AI Extended,不仅支持深度学习引擎和 Flink 计算引擎的集成,其工作流(Flink AI Flow)也应用了一体化设计思想。

去年,Flink还将ML模块(机器学习算法库)升级到2.0版本,目前它是Flink全新的一个子项目,我们知道机器学习的算法库,其运算核心是迭代计算框架,因此在 Flink ML 2.0 项目中,基于 Flink Data Stream 流批一体的 API,重建了一套流批一体的迭代计算框架。它不仅支持传统的同步迭代训练,也支持异步的迭代训练模型。

王峰说道,Flink 不只支持有限数据集的训练,也支持无限流数据集上的在线迭代训练,同时借助 Flink Checkpoint 分布式框架的优势,也支持整个分布式训练断点的异常恢复。这对一些需要长时间运行的训练任务具有良好的生产意义。

从创新的开发者到国际化的管理者

由于Flink支持面越来越广泛,能够适用的场景越来越多,目前已在政务、金融、制造、零售、交通出行、传媒、游戏、科技等行业大规模应用,传统企业得到持续快速增长。值得注意的是,阿里云基于Apache Flink推出了实时计算Flink云产品和全球统一的Flink企业版平台Ververica Platform,推动Flink在各国发展,帮助上千家全球企业更高效地进行实时业务升级。

作为Flink 的创始团队,Ververica 和 Flink 有着非常密切的关系,Ververica 成立的初衷就是为了提供 Flink 的企业级支持和服务,多年来阿里云旗下的Ververica一直在推动 Flink 的发展和应用,帮助企业用户更好地应用 Flink 技术,从而提高实时数据处理和分析的效率。

阿里巴巴则借助Flink社区,不断积累国际化的经验和影响力。如阿里云推出的 Flink on Alibaba Cloud 产品为用户提供了稳定可靠的 Flink 服务,帮助用户在云上快速构建 Flink 应用,推动了 Flink 的应用普及和国际化推广。阿里巴巴还主办多场 Flink Forward 大会等国际性的活动,向全球用户和开发者展示了阿里巴巴在 Flink 技术上的实践和经验,并促进了 Flink 技术在全球范围内的推广和创新。

目前Flink已经成为 Apache 基金会最活跃的顶级项目之一,Flink 的社区成员覆盖到欧洲、北美、东南亚各地,涵盖了学术界、工业界、开源社区等各个领域。作为其中的主导者,阿里巴巴国际化社区的管理也得到日益增强,根据统计,阿里培养了70%以上的Flink 项目管理委员会(PMC)成员和贡献者(committor)。

在整个 Flink 国际化生态不断繁荣发展的过程中,随着中国开发者发起的创新项目越来越得到国际同行的认可,在体验增强的同时,阿里巴巴更加能够承担起国际级创新项目领导者的角色,在技术创新、标准制定和技术标准化等方面发挥更加重要的作用,推动全球技术的发展,这与单纯收购一家国外公司有所区别,前者将为阿里巴巴进一步全球化的发展奠定坚实的基础。

文:陆易斯 / 数据猿


来源:数据猿

声明:数据猿尊重媒体行业规范,相关内容都会注明来源与作者;转载我们原创内容时,也请务必注明“来源:数据猿”与作者名称,否则将会受到数据猿追责。

我要评论

数据猿微信公众号
上海世博展览馆
返回顶部