为什么Flink会成为下一代大数据处理框架的标准?

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文将告诉你Flink是什么,以及为什么Flink会成为下一代大数据处理框架的标准。

导读:本文将告诉你Flink是什么,以及为什么Flink会成为下一代大数据处理框架的标准。

01 什么是Flink?

在当前数据量激增传统的时代,不同的业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效地处理,成为当下大多数公司所面临的问题。

随着雅虎对Hadoop的开源,越来越多的大数据处理技术开始涌入人们的视线,例如目前比较流行大数据处理引擎Apache Spark,基本上已经取代了MapReduce成为当前大数据处理的标准。

但随着数据的不断增长,新技术的不断发展,人们逐渐意识到对实时数据处理的重要性,企业需要能够同时支持高吞吐、低延迟、高性能的流处理技术来处理日益增长的数据。

image.png

相对于传统的数据处理模式,流式数据处理则有着更高的处理效率和成本控制。Apache Flink就是近年来在开源社区发展不断发展的能够支持同时支持高吞吐、低延迟、高性能分布式处理框架。

在2010至2014年间,由柏林工业大学,柏林洪堡大学和哈索普拉特纳研究所联合发起名为“Stratosphere: Information Management on the Cloud”研究项目,该项目在当时的社区逐渐具有一定社区知名度,2014年4月,Stratosphere代码被贡献给Apache 软件基金会,成为Apache基金会孵化器项目。

期初参与该项目的核心成员均来自Stratosphere原来的核心成员,之后团队的大部分创始成员离开学校,共同创办了一家名叫Data Artisans的公司,其主要业务便是将Stratosphere,也就是之后的Flink实现商业化。在项目孵化期间,项目Stratosphere改名为Flink。

Flink在德语中是快速和灵敏的意思,用来体现流式数据处理器的速度快和灵活性强等特点,同时使用棕红色松鼠图案作为Flink项目的Logo,也是主要借助于松鼠灵活快速的特点,由此Flink开始正式地进入社区开发者的视线。

image.png

02 为什么Flink会成为下一代大数据处理框架的标准?

在2014年12月,该项目成为Apache 软件基金会顶级项目,从2015年09月发布第一个稳定版本0.9,到2019年4月已经发布到1.8的版本,更多的社区开发成员也逐步地加入,现在Flink在全球范围内拥有350多位的开发人员,不断有新的特性被发布。

同时在全球范围内,越来越多的公司开始使用Flink,在国内比较出名的互联网公司如Alibaba,美团,滴滴等,都在大规模的使用Flink作为企业的分布式大数据处理引擎。

Flink在近年来逐步被人们所熟知和使用,其主要原因不仅因为提供同时支持高吞吐、低延迟和exactly-once语义的实时计算能力,同时Flink还提供了基于流式计算引擎处理批量数据的计算能力,真正意义实现了批流统一,同时随着Alibaba对Blink的开源,极大地增强了Flink对批计算领域的支持。

众多优秀的特性,使得Flink成为开源大数据数据处理框架中的一颗新星,随着国内社区不断推动,越来越多的国内公司开始选择使用Flink作为实时数据处理的技术,在将来不久的时间内,Flink也将会成为企业内部主流的数据处理框架,最终成为下一代大数据数据处理框架的标准。

03 Flink的重要特性及优势

有状态流计算将会随着技术的发展,逐步成为企业作为构建数据平台的架构模式,而这种技术实现的开源方案目前从社区来看,能够满足的就是Apache Flink。Flink通过实现Google Dataflow流式计算模型实现了高吞吐,低延迟,高性能兼具实时流式计算框架。

image.png

▲有状态计算架构

同时Flink支持高效容错的状态管理,Flink能够将其状态维护在内存或RockDB数据库中,为了防止状态在计算过程中因为系统异常而出现丢失,Flink周期性的通过分布式快照技术CheckPoints实现状态的持久化维护,使得在系统即使在停机或者异常的情况下都能正确的进行状态恢复,从而保证在任何时间都能计算出正确的结果。

数据架构的演变过程,伴随着技术的不断迭代更新,Flink具有先进的架构理念,以及诸多的优秀特性,以及完善的编程接口,而Flink也在每一次的Release版本中,不断推出新的特性。

例如Queryable State功能的提出,将直接容许用户通过远程的方式直接获取流式计算任务的状态信息,也就是说数据不需要落地数据库就能直接从流式应用中直接查询出,对于实时交互式的查询业务可以直接从Flink的状态中查询最新的结果,当然这个功能目前还属于Beta版本,但是相信在不久的未来,会变得越来越完善,那时Flink将不仅作为实时流式处理的框架,更多的可能会成为一套实时的存储引擎,会让更多的用户从有状态计算的技术中获取收益。

image.png

  • 同时支持高吞吐、低延迟、高性能

Flink是一套集高吞吐,低延迟,高性能三者于一身的分布式流式数据处理框架。

非常成熟的计算框架Apache Spark也只能兼顾高吞吐和高性能特性,在Spark Streaming流式计算中无法做到低延迟保障;而Apache Storm只能支持低延迟和高性能特性,但是无法满足高吞吐的要求。而对于满足高吞吐,低延迟,高性能这三个目标对分布式流式计算框架是非常重要的。

  • 支持事件时间(Event Time)概念

在流式计算领域中,窗口计算的地位举足轻重,但目前大多数计算框架窗口计算所采用的都是系统时间(Process Time),也是事件传输到计算框架处理时,系统主机的当前时间,Flink能够支持基于事件时间(Event Time)语义的进行窗口计算,就是使用事件产生的时间,这种时间机制使得事件即使无序到达甚至延迟到达,数据流都能够计算出精确的结果,同时保持了事件原本产生时的在时间维度的特点,而不受网络传输或者计算框架的影响。

  • 支持有状态计算

Flink在1.4版本中实现了状态管理,所谓状态就是在流式计算过程中将算子的中间结果数据的保存在内存或者DB中,等下一个事件进入接着从状态中获取中间结果进行计算,从而无需基于全部的原始数据统计结果,这种做法极大地提升了系统的性能,同时也降低了计算过程的耗时。

对于数据量非常大且逻辑运算非常复杂的流式运算,基于状态的流式计算则显得非常使用。

  • 支持高度灵活的窗口(Window)操作

在流处理应用中,数据是连续不断的,需要通过窗口的方式对流数据进行一定范围的聚合计算,例如统计在过去的1分钟内有多少用户点击了某一网页,在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据再进行计算。

Flink将窗口划分为基于Time、Count、Session,以及Data-driven等类型的窗口操作,窗口能够用灵活的触发条件定制化从而达到对复杂的流传输模式的支持,不同的窗口操作应用能够反馈出真实事件产生的情况,用户可以定义不同的窗口触发机制来满足不同的需求。

image.png

  • 基于轻量级分布式快照(Snapshot)实现的容错

Flink能够分布式运行在上千个节点之上,将一个大型计算的流程拆解成小的计算过程,然后将计算过程分布到单台并行节点上进行处理。

在任务执行过程中,能够自动的发现事件处理过程中的错误而导致数据不一致的问题,常见的错误类型例如:节点宕机,或者网路传输问题,或是由于用户因为升级或修复问题而导致计算服务重启等。

在这些情况下,通过基于分布式快照技术的Checkpoints,将执行过程中的任务信息进行持久化存储,一旦任务出现异常宕机,Flink能够进行任务的自动恢复,从而确保数据在处理过程中的一致性。

  • 基于JVM实现独立的内存管理

内存管理是每套计算框架需要重点考虑的领域,尤其对于计算量比较大的计算场景,数据在内存中该如何进行管理,针对内存管理这块,Flink实现了自身管理内存的机制,尽可能减少Full GC对系统的影响。

另外通过自定义序列化/反序列化方法将所有的对象转换成二进制在内存中存储,降低数据存储的大小,更加有效的对内存空间进行利用,降低GC所带来的性能下降或者任务停止的风险,同时提升了分布式处理过数据传输的性能。

因此Flink较其他分布式处理的框架则会显得更加稳定,不会因为JVM GC等问题而导致整个应用宕机的问题。

  • Save Points(保存点)

对于7*24小时运行的流式应用,数据源源不断的接入,在一段时间内应用的终止都有可能导致数据的丢失或者计算结果的不准确性,例如进行版本的升级,停机运维操作等,都能导致这种情况发生。

然而值得一提的是Flink通过其Save Points技术能够将任务执行的快照(Snapshot)保存在存储介质上,等待任务重启的时候可以直接从实现保存的Save Points恢复原有的计算状态,使得任务继续按照停机之前的状态继续运行,Save Points技术可以让用户更好的管理和运维实时流式应用。

同时Flink除了上述的特性之外也具有其他非常优秀的特性,可以让用户有更多选择。Flink具备非常多的优秀特性,这不仅让Flink在社区的知名度越来越高,也吸引了众多的企业参与研发和使用Flink这项技术。

关于作者:张利兵,资深架构师,流式计算领域专家,第四范式华东区AI项目架构师,原明略数据华东区大数据架构师。有多年大数据、流式计算方面的开发经验,对Hadoop、Spark、Flink等大数据计算引擎有着非常深入的理解,积累了丰富的项目实践经验。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
16天前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
236 22
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
10月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
695 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
8月前
|
SQL 存储 大数据
Flink 基础详解:大数据处理的强大引擎
Apache Flink 是一个分布式流批一体化的开源平台,专为大规模数据处理设计。它支持实时流处理和批处理,具有高吞吐量、低延迟特性。Flink 提供统一的编程抽象,简化大数据应用开发,并在流处理方面表现卓越,广泛应用于实时监控、金融交易分析等场景。其架构包括 JobManager、TaskManager 和 Client,支持并行度、水位线、时间语义等基础属性。Flink 还提供了丰富的算子、状态管理和容错机制,如检查点和 Savepoint,确保作业的可靠性和一致性。此外,Flink 支持 SQL 查询和 CDC 功能,实现实时数据捕获与同步,广泛应用于数据仓库和实时数据分析领域。
4484 32
|
8月前
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
380 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
zdl
|
10月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
423 56
|
8月前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
385 8
|
9月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
340 2
|
10月前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
275 1
|
11月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
226 1
|
10月前
|
SQL 分布式计算 数据处理
Structured Streaming和Flink实时计算框架的对比
本文对比了Structured Streaming和Flink两大流处理框架。Structured Streaming基于Spark SQL,具有良好的可扩展性和容错性,支持多种数据源和输出格式。Flink则以低延迟、高吞吐和一致性著称,适合毫秒级的流处理任务。文章详细分析了两者在编程模型、窗口操作、写入模式、时间语义、API和库、状态管理和生态系统等方面的优劣势。

热门文章

最新文章