每秒40亿条记录!Flink流批融合的背后是阿里巴巴双十一的拉开序幕。今年双十一,实时计算处理的流量峰值达到了创纪录的每秒40亿条记录,数据量也达到了惊人的7TB/秒第二。基于Flink的流批一体化数据应用已经开始在阿里巴巴的核心数据业务场景中崭露头角,并在稳定性、性能、效率等方面经受住了严苛的生产考验。本文首次深入剖析“流批一体”在阿里巴巴核心数据场景的实践经验,回顾“流批一体”大数据处理技术的发展历程。11月11日,时钟敲响12点,2020年双11的GMV数字定格在4982亿。在Flink实时计算技术的驱动下,全程保持丝般顺滑的滚动效果。基于Flink的阿里巴巴实时计算平台也顺利完成了今年双11整体经济的实时数据任务保障,再次顺利通过年度考验。除了GMV媒体大屏,Flink还支持搜索推荐实时机器学习、广告实时反作弊、菜鸟订单状态实时跟踪反馈、实时攻击等重要服务云服务器检测,海量基础设施监控告警。实时业务量和数据量每年都在大幅增长。今年的实时计算峰值达到了创纪录的每秒40亿条记录,数据量也达到了惊人的每秒7TB,相当于一秒读取。500万份《新华字典》。截至目前,我们的实时计算作业已超过35000个,集群总计算规模已超过150万核,处于国内乃至全球领先水平。至此,Flink已经支撑了阿里经济体所有的实时计算需求,实现了数据的实时全链路,将数据的价值第一时间带给了消费者、商家、运营商。但今年Flink技术的演进带来的价值还不止于此。基于Flink的流批一体化数据应用也开始在阿里巴巴的核心数据业务场景中崭露头角,在稳定性、性能、效率等方面都经受住了苛刻的要求。生产测试。“流批一体”率先落地阿里巴巴核心数据场景。事实上,Flink的流批一体技术在阿里巴巴已经应用了很长时间。Flink在阿里的发展是从搜索推荐场景开始的,所以搜索引擎的索引构建和机器学习的特征工程都已经基于Flink的batch-stream一体化架构。今年双11,Flink更进一步,利用流批一体的计算能力,帮助数据中心实现更精准的实时离线跨数据分析和业务决策。阿里的数据报表分为实时和离线两种。前者在双11促销等场景中特别有用。可以为商户、运营和管理提供多维度的实时数据信息,帮助他们及时做出决策。提高平台和业务效率。例如:在一个典型的营销数据实时分析场景中,运营层和决策层需要将大促当天某个时间段的数据结果与历史上某个时间段的数据结果进行对比(对于例如大促当天10点的营业额与昨天10点的营业额对比),从而判断当前的营销效果,是否需要规范,如何规范等策略。在上面的营销数据分析场景中,其实需要两套数据分析结果,一套是基于批处理技术每晚计算的离线数据报表,另一套是基于流处理技术计算出的真实数据。当天的时间数据报告。然后对实时数据和历史数据进行对比分析,根据对比结果做出相关决策。离线和实时报表分别基于批处理和流处理两种不同的计算引擎生成。也就是说,批流分离架构不仅会产生两套开发成本,更难解决数据逻辑和口径对齐的问题。很难保证两套技术开发的数据统计结果一致。因此,理想的方案是使用流批一体的计算引擎进行数据分析,这样离线和实时的报表自然会保持一致。鉴于Flink流批融合计算技术的不断成熟以及前期搜索和推荐场景的成功落地,今年的双11数据平台开发团队也表现出了坚定的信心和信任,与Flink的并肩作战。实时计算团队共同推动实时计算平台的技术升级,使得基于Flink的流批一体化数据处理技术首次在双11核心数据场景成功落地。今年,由Flink团队和数据平台团队共同推动的流批融合计算框架首次亮相双11数据核心场景,也得到了阿里巴巴数据中心负责人彭新宇的认可在业务层:流批一体化在技术上,即使实现了多种计算处理方式,只需要写一套代码就可以做到兼容。计算速度比其他框架快1倍,查询速度快4倍,为小辈搭建数据报表的速度提升4-10倍。同时,由于“一体化”的特点,可以实现实时和离线数据的完全一致。除了业务开发效率和计算性能的提升,流批一体的计算架构也大大提升了集群资源的利用率。经过近几年的快速扩张,阿里的Flink实时集群已经达到了百万核CPU的计算规模,上万个Flink实时计算任务在上面运行。白天是实时数据业务的高峰期,夜间业务低峰期计算资源空闲,正好可以为离线批处理任务提供空闲的计算资源。一套批流引擎运行在一套资源基础上,自然削峰填谷,自然混合分布,不仅节省了开发成本,也大大节省了运维成本和资源成本。今年双11,基于Flink的流批一体化数据业务,没有额外申请任何资源。批处理模式充分复用了Flink的实时计算集群,集群利用率得到大幅提升,为业务方节省了大量的资源开销。高效的资源模式也为未来更多的业务创新提供了沃土。“流批合一”,Flink十年磨一剑接下来,我们从技术角度来说说“流批合一”大数据处理技术的发展历程。这要从开源大数据技术的鼻祖Hadoop说起。Hadoop作为第一代开源大数据技术出现于10多年前。MapReduce作为第一代批处理技术,解决了大规模数据处理的问题。用户可以使用SQL来计算大规模数据。但是,随着大数据业务场景的逐渐发展,很多应用对实时数据的需求越来越强,比如社交媒体、电商交易、金融风控等行业。在这种需求背景下,Storm作为第一代大数据流处理技术应运而生。Storm在架构上与Hadoop/Hive完全不同。它是一种完全基于消息的流计算模型,可以以毫秒级的延迟并发处理。为了处理海量数据,Storm弥补了HadoopMapReduce和Hive时效性的不足。这样,大数据计算在批处理和流处理两个方向上都有不同的主流引擎,并呈现出清晰的格局。大数据处理技术经历了第一个时代。随后大数据处理技术来到了第二个时代,新时代先后出现了Spark和Flink这两个计算引擎。相对于Hadoop和Hive,Spark拥有更完善的批处理表达能力和更优的性能,使得Spark社区发展迅速,并逐渐超越老牌的Hadoop和Hive,成为批处理技术领域的主流技术。但是Spark并没有止步于批处理技术,很快Spark也推出了流计算解决方案,即SparkStreaming,并不断对其进行完善。但是大家都知道,Spark的核心引擎是面向“批处理”概念的,并不是纯粹的流计算引擎,在时效性等问题上无法提供极致的流批一体化体验。而Spark基于一套核心引擎技术,其同时实现流和批计算语义的理念非常先进。它还有一个新的引擎Flink,同样有流批一体化的理念。Flink正式登场比Spark稍晚,但其前身是柏林工业大学2009年的研究项目Stratosphere,至今已有10年的历史。Flink的理念和目标是用一套计算引擎来支持流式和批式两种计算模式,但它选择了与Spark不同的实现路线。Flink选择了面向“流处理”的引擎架构,认为“批”其实是一种“有限流”。基于流式引擎实现流批一体化是比较自然的,不会有架构上的瓶颈。我们可以认为,Flink选择的是“batchonstreaming”架构,这与Spark选择的“streamingonbatch”架构不同。Flink要实现一个完整的流批一体化架构并不容易。在早期的Flink版本中,Flink的流和批在API或运行时方面还没有实现完全统一。不过,从1.9版本开始,Flink开始加速流批一体的完善和升级。FlinkSQL作为用户使用最主流的API,率先实现了流批合一的语义,让用户只需要学习并使用一套SQL就可以进行流批合一的开发,大大节省了开发成本。但是SQL并不能解决用户的所有需求。一些定制化程度更高的作业,比如需要对状态存储进行细粒度操作的作业,仍然需要继续使用DataStreamAPI。在一个常见的业务场景中,用户在写完一个流计算作业后,通常会准备另一个离线作业来批量刷新历史数据。但是DataStream虽然可以很好的解决流计算场景的各种需求,但是缺乏对批处理的高效支持。因此,在完成SQL流批一体化升级后,Flink社区也投入了大量精力从1.11版本开始完善DataStream的流批一体化能力,在DataSteamAPI中加入批处理语义,结合流批一体化Connector设计上,允许DataStreamAPI在流批融合场景下对接Kafka、HDFS等不同类型的流批数据源。接下来,DataStream也将引入流批一体化迭代计算API,进一步解锁一系列机器学习场景。在目前的Flink主版本中,无论是SQL还是DataStreamAPI,流批一体的概念仍然是流计算和批计算功能的结合。用户编写的代码需要选择以流方式运行还是以批方式运行。但是一些业务场景提出了更高的要求,即流批混合,批流自动切换的需求,比如:数据集成和数据入湖场景,用户的需求是先把将数据库中的全量数据同步到HDFS或云存储,然后自动实时同步DB中的增量数据,并在同步过程中进行流批混合ETL数据处理。Flink未来会继续支持更多的智能流批融合场景。Flink“流批一体”技术在阿里巴巴的发展历程阿里巴巴是国内最早选择Flink开源技术的公司。数据计算引擎用于处理搜索和推荐后台的海量产品和用户数据。由于电商行业对时效性要求非常高,我们希望新的计算引擎既有大规模批处理能力,又有毫秒级实时处理能力,即流批统一引擎。当时Spark的生态已经成熟,通过SparkStreaming提供了流批一体的计算能力。Flink前年刚刚成为Apache的顶级项目,还是一个上升期,当时团队对Spark和Flink进行了一段时间的研究和讨论,一致认为虽然当时Flink的生态还不成熟,其以流处理为核心的架构更适合流批一体化,所以非常快速的做出决策,内部基于开源的Flink进行改进和优化,构建搜索和推荐的实时计算平台。经过团队一年的努力,基于Flink的搜索与推荐实时计算平台成功支撑了2016年双11搜索,保障了搜索与推荐链路的实时性。通过在阿里核心业务场景的落地证明,全集团也对Flink实时计算引擎有所了解,决定将全集团的实时数据业务迁移至Flink实时计算平台。经过又一年的努力,Flink在2017年双十一期间不负众望,成功支撑了双十一期间全集团的实时数据业务,包括GMV大屏等最核心的数据业务场景。2018年Flink开始上云,阿里云推出了基于Flink的实时计算产品,旨在为广大中小企业提供云计算服务。喝水思源,阿里巴巴不仅希望利用Flink技术解决自身业务问题,更希望推动Flink开源社区更快发展,为开源技术社区做出更多贡献。因此,阿里巴巴在2019年初收购了Flink创始公司和Flink,TeamVerverica开始在Flink生态和社区投入更多资源。到2020年,几乎所有的国内外主流科技公司都选择了Flink作为他们的实时计算解决方案。我们看到Flink已经成为大数据行业实时计算的事实标准。接下来,Flink社区不会停止技术创新。在阿里巴巴的业务场景中,流批集成技术已经从理论走向了实现。2020年双11,Flink的流批融合技术在天猫营销决策的核心系统中表现出色。此外,在搜索推荐中成功运行的流批一体化索引构建和机器学习过程,充分验证了我们5年前大胆选择Flink技术体系的正确性。相信未来我们会在更多的公司看到Flink的流批融合技术的落地。“流批一体”的技术创新推动了Flink开源社区的蓬勃发展。Flink坚持走流批融合的技术创新之路,自然促进了Flink开源社区的快速发展和生态的加速繁荣。我们欣喜地看到,随着Flink在国内更多公司的加速落地,来自中国社区的力量越来越大,逐渐超越国外成为主流。首先,最明显的是用户数量的增加。从今年6月份开始,Flink中文邮件列表的活跃度已经超过了英文邮件列表。随着大量用户涌入Flink社区,也引入了更多优秀的代码贡献者,有效推动了Flink引擎的开发迭代。从1.8.0版本开始,Flink各个版本的Contributor数量都在增加,而且大部分来自国内各大企业。毫无疑问,国内的开发者和用户群体已经逐渐成为Flink发展的中坚力量。中文社区的持续增长使得Flink的整体活跃度与2019年相比有增无减。在Apache软件基金会的2020财年报告中,Flink被评为年度最活跃的项目(通过user+dev邮件列表活动)。同时,Flink在Github首页的代码提交数和访问量上都排名第二。在Apache软件基金会近350个顶级项目中取得这样的成绩实属不易。FlinkForwardAsia2020,“流批一体化”技术揭秘FlinkForward是Apache官方授权的Flink技术大会。今年的FlinkForwardAsia(简称:FFA)大会全程采用线上直播,为开发者免费提供一场开源盛会。大数据科技盛宴,阿里巴巴、蚂蚁科技、腾讯、字节跳动、美团、小米、快手、哔哩哔哩、网易、微博、Intel、DellEMC、Linkedin等国内外一线互联网公司在线观看分享Flink的技术实践和技术创新。流批融合也将成为本次FFA大会的热门话题。来自天猫的数据技术负责人将为大家分享Flink流批融合技术在阿里的实践与实现,让大家看到流批融合技术是如何在11个最有商业价值的地方发挥作用的核心场景;来自阿里巴巴和字节跳动的FlinkPMC和Committer技术专家将围绕Flink的流批集成SQL和Runtime进行深入的技术解读,为您带来Flink社区的最新技术进展;来自腾讯的游戏技术专家为大家带来Flink在国民游戏王者荣耀中的应用实践;美团实时大数据负责人介绍Flink如何助力实时生活服务场景;来自快手的任大数据负责人将在快手为大家带来Flink的发展历程;微博机器学习技术专家将带你了解如何使用Flink进行信息推荐。此外,Flink相关话题还涵盖了金融、银行、物流、汽车制造、出行等各个行业,呈现出百花齐放的繁荣生态景象。欢迎热衷于开源大数据技术的开发者参加本次FlinkForward亚洲技术大会,了解更多Flink社区的最新技术发展和创新成果。【本文为专栏作者《阿里巴巴官方技术》原创稿件,转载请联系原作者】点此查看作者更多好文
