当前位置: 首页 > 后端技术 > Java

几百人的投入,多场双十一,Flink够不够强大?

时间:2023-04-02 00:27:04 Java

采访嘉宾|汪峰(墨文)作者|Tina

作为目前最活跃的大数据项目之一,Flink已经连续8年进入Apache软件基金会顶级项目。ApacheFlink是一个实时大数据分析引擎,支持流批执行模式,与Hadoop生态无缝对接。2014年被接纳为Apache孵化器项目,短短几个月后,成为Apache顶级项目。对于Flink,阿里有一个非常适合的streaming场景。作为Flink的主导力量,阿里从2015年开始研究Flink,并于2016年首次在搜索场景推出了Flink。在落地的同时,阿里对Flink进行了大量的修改和改进,以适应超大-扩展业务场景。2017年,阿里已经成为Flink社区的最大用户,Flink团队有数百人。其中一些早期的改进已经在阿里2018年的文章《 Flink 已经足够强大了吗?阿里巴巴说:还不够 》中进行了详细的解释。2019年,阿里宣布收购Flink背后的公司,正式开源Flink内部版本Blink,贡献代码超过百万行,极大促进了社区的健康发展。2021年双十一期间,Flink承载的实时计算峰值达到每秒40亿条记录,数据量也达到每秒7TB,相当于每秒阅读500万本书《新华字典》。近年来,Flink社区在国内外的技术会议上不断的推广和推广,使得Flink被广泛采用,各种应用场景更加广泛,生态发展迅速。Flink变得强大了,它的设计目标不再只是一个流计算引擎,而是让大多数数据分析师可以使用Flink的流批API构建实时数据集成、分析、风控、在线机器学习场景。计划。2022年11月26-27日,FlinkForwardAsia2022将在线上举行,这是一个总结近期发布的重要功能的机会。这一次,Flink的流式数据仓库功能更加成熟,CDC也可以接入多种数据库……InfoQ借此机会专访了ApacheFlink中文社区创始人、阿里巴巴开源大数据平台负责人王峰。华明墨文),解读Flink核心技术进展,了解Flink未来规划。从流计算到流批融合计算在打败Storm和SparkStreaming之后,Flink已经成为流计算的唯一标准,在技术上没有竞争对手。在诞生之初,Flink之所以能够迅速击败上一代流计算引擎Storm,正是凭借着“有状态流计算”的核心理念和特性。通过合流计算和状态管理两项技术,Flink不仅提供高性能的纯流式计算,还在框架层通过分布式一致性快照技术为用户提供数据准确性和一致性保证。在莫文看来,这也是Flink出道后迅速成为流计算领域新主流的关键原因。SparkStreaming虽然也可以借助强大的Spark生态成为一些流计算场景的选择,但其本质还是建立在SparkBa??tch引擎之上,不纯的流执行方式依然会限制其执行性能和流语义表达。在批计算方面,Flink已经完成了大部分工作,并且越来越成熟。“目前,Flink已经能够完整跑完批处理标准测试集TPC-DS,性能也很不错,已经达到了主流批处理引擎的水平。接下来,Flink会继续完善和打磨批处理的成熟,并结合自身流处理的天然优势,力求为用户带来业界最佳的流批一体化计算体验。”为什么需要流批一体化?为什么基于Flink的流批一体在技术上更有优势?让我们从商业的角度来看这个问题。早期的企业基本都是线下业务,每天跑一次报表,以批处理为主。然而,数字世界在不断发展,对实时性的要求会越来越高。实时风控、实时BI统计、实时推荐、实时监控不能等到晚上(晚上可能产品卖完,用户可能离开),实时数据分析可以带来对用户的价值。渐渐地离线和实时会成为并行和分裂的两个环节,随着实时数据流量占比不断提升,需要二次开发的任务会越来越多,开发者开始面临开发效率问题。此外,实时和离线链接的拆分也会存在业务口径一致性的问题。在之前的技术方案下,实时和离线相当于使用两套工具来工作,使用不同的语言和不同的引擎,数据口径也不一样。如果不能保持一致,这样的分析结果就会干扰业务决策,甚至会误导决策失误。这时候,流批合一自然成为解决实时离线切分的“新方法”。用一套计算引擎开发的两个实时离线业务流程自然是一致的,不会出现错误。尤其是一些时效性高的业务场景,比如数据平台中的搜索、推荐、广告、营销分析等,流批融合的需求自然会比较高。而且,在搜索推荐场景中,还可以将Flink流式批任务和在线任务混在一起,共享一个资源池,统一调度,最大限度的利用服务器资源。这也是业内比较先进的做法。流批一体的新架构带来的好处是显而易见的,但并不代表它是“一刀切”的技术架构。莫文认为,“如果现在的数据业务基本都在离线数仓,没有一定规模的实时业务,那么没必要过早做流批一体化改造,因为好处是都不是很大,当实时的业务量越来越大,如果成为主流,相对离线的比例日益增加,或者对数据的一致性要求越来越强,一致,那么流批一体化架构是未来的必然选择。”Streamingdatawarehouse:anewstream-batch-basedintegration数据仓库架构,流批一体化是一个技术概念,Flink在SQL层提供了流批一体化的语义表达能力,即用户可以编写一套SQL,使其可以同时在实时和离线场景下使用,从而获得完全增量的一体化数据开发体验。流批一体化的思路就这样结束了吗?显然还不够.因为在数据存储环节上还有很多复杂的地方,例如:在实时链路上,Flink需要将数据写入到Kafka等流式存储中,而在离线链路上,Flink往往需要将数据写入到像Hive/Iceberg/Hudi这样的批量存储,两个存储链路是分开的,用户还是需要同时维护两条数据链路,给管理带来很大的难度,但是之所以需要维护两套存储同时存在的一个问题是,目前业界还没有一款流批一体的存储,相对高效可用,支持高效的流读、流写、批读、批写能力。为了满足不同的业务需求(时效性、可分析性等),只能通过多个链路的组合来拼接,甚至需要不同存储之间的数据同步,这必然会使整个链路变得越来越复杂。那么业界是否已经有可用的流批一体存储来解决这个问题呢?你可能会想到ApacheHudi的主流湖存储项目。Hudi在流式和批量存储能力上确实是业界技术最完善的。但是Hudi在存储结构设计上并不适合大规模更新。因此,Flink社区下一阶段的重点方向就是解决这个用户痛点,进一步完善流批一体的理念,提供真正可用的流批一体存储技术,从而推出一个完整的流基于流批一体化计算和存储的数据。新的仓库架构也是Flink社区在2021年底推出FlinkTableStore独立子项目的背景。2022年,FlinkTableStore完成了从0到1的孵化,并发布了两个发布版本。除了阿里巴巴之外,包括字节跳动在内的多家公司已经参与了这个项目的贡献,并且已经有不同的公司开始尝试。Flink社区下一个关键的演进方向是流式数仓的新架构,为用户提供更简洁实时的数仓架构,提供更融合的体验。流批计算与存储落地场景的完美结合。在今天的FlinkForwardAsia2022上,墨问给大家展示了一个完整的产品demo。基于阿里实时计算平台,在TPC-H业务后台运行了完整的流批一体化数据处理分析流程。包括FlinkCDC数据从数据库源头入湖(写入TableStore)、FlinkSQL实时流式分析(订阅TableStore)、批量数据校正和实时交互查询,呈现一个完整的全新流式数据仓库架构结果。另外,Flink的流数据仓库架构也是一个开放系统,支持其他所有能够流??批一体的存储系统,比如阿里云的Hologres,阿里也完成了FlinkSQL的企业级自研流数据+内部Hologres。仓库产品即将正式发售。基于Flink的全增量集成数据集成数据集成是实时流处理平台中非常重要的应用场景,这一点在Garnter2022年1月发布的流处理平台市场指导报告中也可以得到印证。从全球来看市场约有1/3的流处理场景与实时数据集成相关,即通过流处理能力将各种变化的数据源的数据同步到分析数据库、数据仓库和数据湖中,从而保证用户可以实时分析数字世界的最新动态。随着实时数据分析技术的普及,用户的数据同步需求也进一步升级。有望使用一套集成的全量数据同步工具,实现数据一键同步。然而,在传统的数据集成技术体系下,全量、实时的数据同步往往需要两套工具(基于批和流),用户需要在两套工具之间进行协调。无缝连接和保证数据一致性是非常困难和具有挑战性的。但是,如果能够利用Flink的流批融合特性,实现实时数据集成的全增量集成将变得可行。另外,Flink本身也有丰富的connector生态,可以对接业界各种主流存储,还有优秀的分布式集成框架,包括容错和分布式一致性快照能力。因此,在Flink的基础上做全增量集成数据集成,相当于“站在巨人的肩膀上”,会更快更容易。这就是FlinkCDC项目诞生的背景。它充分利用了Flink自身的诸多优势,采用流批一体化的执行方式,实现了全增量同步和自动切换。卷快照一致性读算法保证线上数据库的数据同步过程是无锁的,不会对生产业务造成任何影响。CDC项目作为另一个流批融合的创新应用场景,发展也非常迅速。网易、腾讯、Oceanbase、Bilibili、Xtransfer等公司都参与了社区贡献。GitHubStar已经超过3000,生态扶持。众多主流数据库,包括MySQL、Oracle、PostgreSQL、MongoDB、TiDB、PolarDB、OceanBase。莫文表示,FlinkCDC将进一步利用Flink社区的创新成果,接入更多的数据源,成为新一代全增量集成数据集成引擎。云原生时代的Flink随着云原生的流行,越来越多的企业应用开始向容器化迁移,并通过K8s进行编排和管理。近年来,大数据领域的Spark、Kafka开始支持K8s,使得大数据应用从传统的Yarn时代走向云原生时代。Flink社区很早以前就开始基于云原生进行设计,包括Flink的资源调度、流式shuffle等,天然适合云原生。Flink作为流式计算引擎,不需要对数据进行shuffle。都是流式数据传输。分布式计算之间的数据流动是通过网络和内存,不依赖于本地磁盘。因此,它是自然的存储和计算。独立的架构。此外,Flink还自带状态存储。计算算子和状态访问集成,算子内部支持状态访问。这实际上是在向存储和计算分离的方向发展,也就是Flink可以随时关闭。关闭RocksDB服务,并将状态数据快照到持久化HDFS或云存储。作为云原生架构的产物,Flink本身就已经朝着云原生架构设计。五六年前,社区就开始在K8s上开发Flink。支持K8s后,对Flink会有很大的帮助。比如部署不依赖Hadoop:只要有K8s,就可以部署Flink,不需要任何依赖。运维方案也很规范,K8s运维体系也会运维Flink。同时,Flink也可以基于容器进行部署。容器给Flink带来了更好的隔离,包括任务之间的隔离,多租户管理,甚至下一步的serverless,会更自然,更容易。在云原生的发展趋势下,适应性非常重要。更好的资源弹性让业务波动更加灵活,云端的资源也是海量的,用户可以根据业务需求不断灵活调整资源规模。尤其是在无服务器环境下,用户甚至不需要考虑机器资源。Flink本身也会加入更多的自适应能力,实现自动化的任务并发管理和状态数据管理,让Flink更好的利用云端的弹性机制。ApacheFlink正在蓬勃发展,成为庞大的大数据分析生态中不可或缺的一部分,逐渐成为企业数据战略的重要支柱。但是,对于一些传统企业来说,如果没有强大的大数据技术团队,用开源软件搭建数据分析平台还是有难度的。因此,提供产品化服务,降低技术门槛,也是阿里云Flink技术团队正在做的事情。阿里云推出云原生实时计算Flink产品,提供以FlinkSQL为核心的开发运维平台,将在阿里巴巴积累的Flink生产运维经验和企业级能力以形式开放给公众的产品化。为广大中小企业提供实时数仓、实时数据集成、实时风控、实时特征工程等解决方案,助力数字化企业加速大数据实时升级技术。此外,阿里云提供的Flink产品也采用了最先进的Serverless架构。用户只需按需购买计算资源,即可便捷地运行和使用Flink,让实时计算更具普惠性。莫文表示,未来几个月,基于Flink的多云PaaSServerless服务也将在全球进行测试。作为推动Flink社区持续技术创新的核心研发团队,阿里云希望进一步将Flink技术生态推向世界。面试官介绍:汪峰,绰号“墨文”,阿里巴巴研究员,毕业于北航,2006年加入阿里巴巴,现任阿里云开源大数据平台负责人,任阿里云开源大数据平台副主席。阿里巴巴开源委员会大数据与人工智能方向。2015年,初出茅庐的ApacheFlink被引入国内。基于Flink,阿里大数据进入全链路实时时代,这一标杆效应带动了Flink在全球各行业的快速普及和发展,让Flink成为大数据中心。数据实时计算领域的事实标准。阿里积极拥抱开源,积极为开源做贡献。迄今为止,阿里开源了数百个优秀项目,GitHub总Star数超过百万。更多内容FlinkForwardAsia2022本次FlinkForwardAsia更多精彩内容,请点击阅读原文或扫描图片二维码观看所有专题视频回放,获取FFA2022峰会资讯!PC端查看:https://flink-forward.org.cn/《建议前往FFA2022大会官网观看所有议题视频回放》活动推荐基于阿里云企业级产品onApacheFlink-实时计算Flink版现已开放:99元试用实时计算Flink版(包年,10CU),有机会获得Flink专属定制卫衣;3个月及以上的另一个套餐将有15%的折扣!了解更多活动详情:https://www.aliyun.com/produc...