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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
25天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
71 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
1月前
|
分布式计算 监控 大数据
大数据-131 - Flink CEP 案例:检测交易活跃用户、超时未交付
大数据-131 - Flink CEP 案例:检测交易活跃用户、超时未交付
67 0
|
26天前
|
分布式计算 大数据 OLAP
AnalyticDB与大数据生态集成:Spark & Flink
【10月更文挑战第25天】在大数据时代,实时数据处理和分析变得越来越重要。AnalyticDB(ADB)是阿里云推出的一款完全托管的实时数据仓库服务,支持PB级数据的实时分析。为了充分发挥AnalyticDB的潜力,将其与大数据处理工具如Apache Spark和Apache Flink集成是非常必要的。本文将从我个人的角度出发,分享如何将AnalyticDB与Spark和Flink集成,构建端到端的大数据处理流水线,实现数据的实时分析和处理。
54 1
|
12天前
|
SQL 分布式计算 数据处理
Structured Streaming和Flink实时计算框架的对比
本文对比了Structured Streaming和Flink两大流处理框架。Structured Streaming基于Spark SQL,具有良好的可扩展性和容错性,支持多种数据源和输出格式。Flink则以低延迟、高吞吐和一致性著称,适合毫秒级的流处理任务。文章详细分析了两者在编程模型、窗口操作、写入模式、时间语义、API和库、状态管理和生态系统等方面的优劣势。
zdl
|
12天前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
46 0
|
1月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
58 1
|
1月前
|
消息中间件 分布式计算 Kafka
大数据平台的毕业设计02:Spark与实时计算
大数据平台的毕业设计02:Spark与实时计算
|
1月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
|
1月前
|
SQL 运维 大数据
大数据实时计算产品的对比测评
在使用多种Flink实时计算产品后,我发现Flink凭借其流批一体的优势,在实时数据处理领域表现出色。它不仅支持复杂的窗口机制与事件时间处理,还具备高效的数据吞吐能力和精准的状态管理,确保数据处理既快又准。此外,Flink提供了多样化的编程接口和运维工具,简化了开发流程,但在界面友好度上还有提升空间。针对企业级应用,Flink展现了高可用性和安全性,不过价格因素可能影响小型企业的采纳决策。未来可进一步优化文档和自动化调优工具,以提升用户体验。
125 0
|
1月前
|
SQL 大数据 API
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例
46 0
下一篇
无影云桌面