1. 学习 flink 的原因
早在 18 年时,我便听说了
Flink
由于我平时主要从事业务开发,尚未系统学习
Flink
因此,我们规划了如下的系统架构:
可以看出,业务数据库与数据分析系统已被分离,这样可以避免对核心业务的影响。数据分析的结果存储在线下备份库中,这样即使查询大量分析结果,也不会影响到核心业务。
在数据处理方面,我们选择了
Flink
官网虽然有中文版的文档,但翻译并不完全,经常需要跳转到英文博文。这里推荐一个国内网站 https://www.php.cn/link/7da66e82dc1f8024527341be2df86b9f。
基础语义
基础语义非常重要,高层语法都是基于基础语义构建的,所以需要对它们有所了解。我推荐
ververica
从上图可以看出,数据流分为有界(bounded)和无界(unbounded)两种。有界数据流大小固定,计算最终会完成并结束;无界数据流的数据会随着时间推移持续增加,计算会持续进行且没有结束的状态。
数据流还具有实时和历史记录的属性。实时处理是数据一生成就立即处理;如果时效性要求不高,可以在凌晨统计前一天的完整数据,将数据流持久化到存储系统中,然后进行批处理。
状态是计算过程中保存的数据信息,在容错恢复和
Checkpoint
Exactly-once
Exactly-once

Flink
事件时间
处理时间
摄入时间
Flink
三个时间的具体位置如上图所示,后续会详细讲解。
从上到下分为三层:
SQL/Table API
DataStream API
ProcessFunction
API
SQL
SQL API
反之,
ProcessFunction
API
通常,我们最常用的是中间层的
DataStream API
架构介绍来源于 https://www.php.cn/link/45402d4ff8981a182dcfc4813600961f
1. 有界和无界数据流
Flink
Window
API
Flink
Yarn
Kubernetes
Flink
Standalone
Standalone
对于分布式系统来说,可伸缩性非常重要。资源不足时可以动态添加节点,分担压力;资源充足时可以撤下服务器,减少资源浪费。阿里巴巴双 11 大屏使用
Flink
Flink
Storm
IO
以上是对
Flink
这里不会深入分析,主要简单介绍它的特性和优点,提供一个大致的了解,逐步深入,在后续文章中进一步学习。
处理流程
Flink
Flink
DataSet API
DataSet
map
flatMap
上图是数据处理流程,可以看到几个核心组件:
自带的
API
RichSourceFunction
图中获取的数据源是
Kafka
进行数据的转化,对应于文档中的算子
Operator
map
flatMap
filter
keyBy
reduce
fold
deprecated
aggregate
Window
从上图也可以看出,转换的操作可以不止一次,多个算子可以形成
chain
进行数据的存储或发送,对应于文档中的
connector
常用的存储
sink
Kafka
Apache Cassandra
Elasticsearch
RabbitMQ
Hadoop
RichSinkFunction
性能比较
例如与
Hadoop
Storm
Spark
Flink
由于之前没有使用过这些大数据框架,所以测评数据可以参考以下两篇文章:
Flink实时计算性能分析 https://www.php.cn/link/9ce60c64ac4510df68537de96631261f Flink 与 Storm 的性能对比 https://www.php.cn/link/87e942236933558e0ea7cd7dee76e9db:
上图的数据源是
Kafka Source
Storm
Flink
partition
Flink
Storm
上图采用
outTime-eventTime
Flink
Storm
管理方式 JobManager、TaskWorker
上面是官方示意图,阐述了
Flink
Flink Program
JobManager
TaskManager
上面是我对它的理解,我个人认为
zhisheng
高可用 HA、状态恢复
High Availability
Flink
List
map
aggregate
State
Checkpoint
Savepoint
详细请参考这两篇:
Apache Flink 零基础入门(七):状态管理及容错机制 https://www.php.cn/link/a1280bb57e980da66d54eb0f20cbb95e Flink状态管理和容错机制介绍 https://www.php.cn/link/c72741e550f08085fefee77a99d9ccb3
真的是非常敬仰发明优秀框架的团队,也非常敬佩每一个为技术做贡献的参与者,所以每次找到相关的资料都跟发现宝藏一样。
下面罗列一下目前找到的资料:
Flink
国内牛人的分享:https://ververica.cn
可以关注一下提的问题和阿里分支
:https://github.com/apache/flink
个人学习的流程是跟着他的文章走了一遍,然后遇到不懂的继续深入学习和了解:http://www.54tianzhisheng.cn/tags/Flink/
这位大佬是从 16 年就开始研究
,写的文章很有深度,想要详细了解
,一定要看他的文章!:http://wuchong.me/categories/Flink/从上面的资料可以看出,
基础知识点
运行环境如下:
上图是我在学习过程中整理的一些知识点,之后将会根据罗列的知识点慢慢进行梳理和记录。
从调研的结果中可以看出,无论从性能、接口编程和容错上,
Flink
github
star
Flink
Apache Flink 已经是非常优秀和成熟的流计算引擎
Apache Flink 已经成为优秀的批处理引擎的挑战者
继续挖掘 Apache Flink 在 OLAP 数据分析领域的潜力,使其成为优秀的数据分析引擎
直觉相信,
Flink
参考资料
Flink 从 0 到 1 学习 —— Apache Flink 介绍
Apache Flink 是什么?
Apache Flink 零基础入门(一&二):基础概念解析
为什么说流处理即未来?
Apache Flink 零基础入门(七):状态管理及容错机制
Apache Flink状态管理和容错机制介绍
以上就是带你走入 Flink 的世界的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号