走进 Apache Flink | 学习笔记(一)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 快速学习走进 Apache Flink

开发者学堂课程【开源 Flink 极客训练营走进 Apache Flink】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/760/detail/13337


走进 Apache Flink

 

内容介绍:

一、追本溯源–Flink 的昨天

二、唯快不破–流批的本质

三、秉轴持钧–流计算的核心

四、学以致用一Flink 应用场景

 

本节目标:

对 Flink 的前世今生有一个直观的了解,同时 Flink 作为流批统一的大数据引擎,了解流与批的本质区别与 Flink 的学习至关重要。了解了流与批的本质区别之后,更需要了解形成这一本质区别的手段是什么。当了解 Flink 的历史,了解了 Flink 的由来以及 Flink 流计算的一些特质,Flink 流支持这些流计算和音特质核心机制后,要清楚的知道 Flink 可以解决哪方面的业务问题。

 

一、追本溯源–Flink的昨天

1.Flink 的起源

德国柏林工业大学就是 Flink 的发源地

图片1.png

Flink 源于柏林工业大学,起初项目的名字并不叫 Flink,而是叫 Stratosphere,该项目的目标是致力于对大数据的处理。所以当时的使命是:Big Data looks tiny from here.

回看 Stratosphere 其实做到了该点,它已经成为 Apache Flink 的顶级项目,也成为了目前火热的、流批统一的大数据引擎。

当时该项目源于学校,也是一个研究型项目,致力于打造新一代的大数据分析平台,除了德国柏林工业大学还有其他大学及机构共同参与和贡献。于2014年4月份贡献给Apache软件基金会,并于12月份迅速成为Apache顶级项目。

在该项目贡献给 Apache 之前,Stratosphere 有36位贡献者:

图片2.png

这些元老级贡献者中,有很多成为了 Flink 的 pmc 成员。

我们现在非常感谢当初他们的创造性的付出,才有了今天在企业中不断创造价值的 Apache Flink。

Stratosphere 项目是从2010年开始的,从它的Git commit日志里面可以看到,它的第一行代码是在2010年的12月15日星期三下午的17时02分01秒开始的。

图片3.png

该名字被柏林工业大学使用了3年多,然后就出现在 Apache 的邮件列表中,也就是在2014年5月14日该项目的名字正式更名为 Flink。

最初的讨论是在 Stratosphere 的开发邮件中进行的,之后在 Apache 的邮件列表进行一个知会,所以在更名为 Flink 之前已经是 Apache 的项目。

图片4.png

2.Flink 的发展

贡献到 Apache 社区后,Apache Flink 孵化器期间,孵化第一个版本在2014年的8月27号完成了第一个版本 v0.6-incubating

图片5.png

从贡献到 Apache 社区到第一个版本的发布,用了4个月左右的时间,该时间也是 Flink 一直保持的发布周期。

在两个孵化器版本发布之后,Apache 迅速在2014年12月12日从 Apache 孵化器毕业,成为 Apache 的顶级项目。

Flink 能在短短几个月内毕业,足以证明其本身的优秀。

在成为 Apache 顶流项目后,Apache 在2015年1月份 Apache 发布了成为顶级项目后的第一个 Release 版本Flink 0.8.0。正式步入了 Apache 顶级项目的正轨。

纵观 Flink 发布的周期的历史,Flink 每四个月会进行一次版本的发布,对于初学者来说,Flink 的昨天、由来(包括名字的由来)、项目的原始初衷和目的、现在的发布,了解的较为清楚了。

3.Flink 内部内容

学习 Flink 内部建议从最新版本开始,当遇到具体问题点、具体功能点,可以回溯其功能的变化。

图片6.png

从 Flink1.11 发布之后,官方陆续文章了一些介绍,一些新功能。

这里简单的列举几点:

第一个:Unaligned Checkpoints

该功能在精准一次性语义下大大缩短了检查点的时间,提高检查点成功的概率。(在1.11版本之前,有一个对其的过程,对其意味着有一个等待的过程,所以等待会有耗时,该新功能消除了该等待时间,进而大大缩短了等待时间,也提高了其成功率,因为进行时会有一个超时时间,时间过长可能会失败,所以该功能在实际生产中是非常主要的功能。)

第二个:Watermark ldleness Detection

水印生成的控前检测,该功能非常实用,举个例子:

比如要上游消费一个 kafka 的数据,有多个 partition,当每个 partition 的数据不一样时,数据最慢或者最小的实验数据会阻碍 Flink 内部的一个叫 word mark 生成的 case ,阻止了 word mark 的持续向前(单调递增的生成),这样的话就阻碍了业务持续的计算。有了 Watermark ldleness Detection 功能后,可以检查某一个空闲,生成 word mark 时可以暂时忽略来确保业务数据的持续的上升计算。

第三个:Batch and Streaming Unification (Source)

Source 接口的统一,流批统一的基础建设之一。

对正在应用 Flink 的用户而言,并不关心到低是流还是批,关心的是计算的延时和计算的准确性。因为流计算延时低,所以才关心流,因为批计算一次结果不再更新,计算非常准确,所以才知道了批的概念。但是其实本身并不关心,可以不告诉是流,不告诉是批,只需要告诉需要这样的延时、需要这样的准确性,是否能够完成就行。所以最终要朝着统一流批融合的方向发展的话,其实流和批对于用户而言越来越淡化。

第四个:Application Mode Deployments

是作为提交模式的优化,在之前提交一个作业要在提交作业的 clangd 端生成一些资源的下载等等,这时如果建立在 Flink 基础之上构建自己的业务平台时,提交作业可以造成单点问题。这项功能的优化减轻了 clangd 的压力。

第五个:Change Data Capture(CDC)

在数据迁移场景非常实用,在很多场景上都有该应用,可以在1.11版本中尝试该类型的功能。

第六个:Pandas UDF PyFlink

PyFlink 本身的愿景是不断地增强 python 的分布式处理能力,从而也不断地扩大 Flink 本身 python 生态。PyFlink 对 Pandas UDF PyFlink 的支持无疑是扩展了 Flink 在 python 生态上的支持,同时 UDF 的性能相对之前的版本也有高达30倍的性能提升。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
18天前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
308 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
871 13
Apache Flink 2.0-preview released
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
103 3
|
4月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
5月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
303 2
|
4月前
|
消息中间件 资源调度 API
Apache Flink 流批融合技术介绍
本文源自阿里云高级研发工程师周云峰在Apache Asia Community OverCode 2024的分享,内容涵盖从“流批一体”到“流批融合”的演进、技术解决方案及社区进展。流批一体已在API、算子和引擎层面实现统一,但用户仍需手动配置作业模式。流批融合旨在通过动态调整优化策略,自动适应不同场景需求。文章详细介绍了如何通过量化指标(如isProcessingBacklog和isInsertOnly)实现这一目标,并展示了针对不同场景的具体优化措施。此外,还概述了社区当前进展及未来规划,包括将优化方案推向Flink社区、动态调整算子流程结构等。
440 31
Apache Flink 流批融合技术介绍
|
3月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
87 1
|
3月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
209 0
|
3月前
|
消息中间件 druid Kafka
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
从Apache Flink到Kafka再到Druid的实时数据传输,用于分析/决策
99 0
|
5月前
|
Java 微服务 Spring
驾驭复杂性:Spring Cloud在微服务构建中的决胜法则
【8月更文挑战第31天】Spring Cloud是在Spring Framework基础上打造的微服务解决方案,提供服务发现、配置管理、消息路由等功能,适用于构建复杂的微服务架构。本文介绍如何利用Spring Cloud搭建微服务,包括Eureka服务发现、Config Server配置管理和Zuul API网关等组件的配置与使用。通过Spring Cloud,可实现快速开发、自动化配置,并提升系统的伸缩性和容错性,尽管仍需面对分布式事务等挑战,但其强大的社区支持有助于解决问题。
86 0

推荐镜像

更多