共计 9554 个字符,预计需要花费 24 分钟才能阅读完成。
Flink 学习项目代码
https://github.com/zhisheng17/flink-learning
http://www.54tianzhisheng.cn/2019/12/31/Flink-resources/
麻烦路过的各位亲给这个项目点个 star,太不易了,写了这么多,算是对我坚持下来的一种鼓励吧!
本项目结构
博客
1、Flink 从 0 到 1 学习 —— Apache Flink 介绍
2、Flink 从 0 到 1 学习 —— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门
3、Flink 从 0 到 1 学习 —— Flink 配置文件详解
4、Flink 从 0 到 1 学习 —— Data Source 介绍
5、Flink 从 0 到 1 学习 —— 如何自定义 Data Source?
6、Flink 从 0 到 1 学习 —— Data Sink 介绍
7、Flink 从 0 到 1 学习 —— 如何自定义 Data Sink?
8、Flink 从 0 到 1 学习 —— Flink Data transformation(转换)
9、Flink 从 0 到 1 学习 —— 介绍 Flink 中的 Stream Windows
10、Flink 从 0 到 1 学习 —— Flink 中的几种 Time 详解
11、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 ElasticSearch
12、Flink 从 0 到 1 学习 —— Flink 项目如何运行?
13、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 Kafka
14、Flink 从 0 到 1 学习 —— Flink JobManager 高可用性配置
15、Flink 从 0 到 1 学习 —— Flink parallelism 和 Slot 介绍
16、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据批量写入到 MySQL
17、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 RabbitMQ
18、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 HBase
19、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 HDFS
20、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 Redis
21、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 Cassandra
22、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 Flume
23、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 InfluxDB
24、Flink 从 0 到 1 学习 —— Flink 读取 Kafka 数据写入到 RocketMQ
25、Flink 从 0 到 1 学习 —— 你上传的 jar 包藏到哪里去了
26、Flink 从 0 到 1 学习 —— 你的 Flink job 日志跑到哪里去了
Flink 源码项目结构
学习资料
另外我自己整理了些 Flink 的学习资料,目前已经全部放到微信公众号了。
你可以加我的微信:zhisheng_tian,然后回复关键字:Flink 即可无条件获取到,转载请联系本人获取授权,违者必究。
更多私密资料请加入知识星球!
有人要问知识星球里面更新什么内容?值得加入吗?
目前知识星球内已更新的系列文章:
1、Flink 源码解析 —— 源码编译运行
2、Flink 源码解析 —— 项目结构一览
3、Flink 源码解析—— local 模式启动流程
4、Flink 源码解析 —— standalonesession 模式启动流程
5、Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Job Manager 启动
6、Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Task Manager 启动
7、Flink 源码解析 —— 分析 Batch WordCount 程序的执行过程
8、Flink 源码解析 —— 分析 Streaming WordCount 程序的执行过程
9、Flink 源码解析 —— 如何获取 JobGraph?
10、Flink 源码解析 —— 如何获取 StreamGraph?
11、Flink 源码解析 —— Flink JobManager 有什么作用?
12、Flink 源码解析 —— Flink TaskManager 有什么作用?
13、Flink 源码解析 —— JobManager 处理 SubmitJob 的过程
14、Flink 源码解析 —— TaskManager 处理 SubmitJob 的过程
15、Flink 源码解析 —— 深度解析 Flink Checkpoint 机制
16、Flink 源码解析 —— 深度解析 Flink 序列化机制
17、Flink 源码解析 —— 深度解析 Flink 是如何管理好内存的?
除了《从 1 到 100 深入学习 Flink》源码学习这个系列文章,《从 0 到 1 学习 Flink》的案例文章也会优先在知识星球更新,让大家先通过一些 demo 学习 Flink,再去深入源码学习!
如果学习 Flink 的过程中,遇到什么问题,可以在里面提问,我会优先解答,这里做个抱歉,自己平时工作也挺忙,微信的问题不能做全部做一些解答,
但肯定会优先回复给知识星球的付费用户的,庆幸的是现在星球里的活跃氛围还是可以的,有不少问题通过提问和解答的方式沉淀了下来。
1、为何我使用 ValueState 保存状态 Job 恢复是状态没恢复?
2、flink 中 watermark 究竟是如何生成的,生成的规则是什么,怎么用来处理乱序数据
3、消费 kafka 数据的时候,如果遇到了脏数据,或者是不符合规则的数据等等怎么处理呢?
4、在 Kafka 集群中怎么指定读取 / 写入数据到指定 broker 或从指定 broker 的 offset 开始消费?
5、Flink 能通过 oozie 或者 azkaban 提交吗?
6、jobmanager 挂掉后,提交的 job 怎么不经过手动重新提交执行?
7、使用 flink-web-ui 提交作业并执行 但是 /opt/flink/log 目录下没有日志文件 请问关于 flink 的日志(包括 jobmanager、taskmanager、每个 job 自己的日志默认分别存在哪个目录)需要怎么配置?
8、通过 flink 仪表盘提交的 jar 是存储在哪个目录下?
9、从 Kafka 消费数据进行 etl 清洗,把结果写入 hdfs 映射成 hive 表,压缩格式、hive 直接能够读取 flink 写出的文件、按照文件大小或者时间滚动生成文件
10、flink jar 包上传至集群上运行,挂掉后,挂掉期间 kafka 中未被消费的数据,在重新启动程序后,是自动从 checkpoint 获取挂掉之前的 kafka offset 位置,自动消费之前的数据进行处理,还是需要某些手动的操作呢?
11、flink 启动时不自动创建 上传 jar 的路径,能指定一个创建好的目录吗
12、Flink sink to es 集群上报 slot 不够,单机跑是好的,为什么?
13、Fllink to elasticsearch 如何创建索引文档期时间戳?
14、blink 有没有 api 文档或者 demo,是否建议 blink 用于生产环境。
15、flink 的 Python api 怎样?bug 多吗?
16、Flink VS Spark Streaming VS Storm VS Kafka Stream
17、你们做实时大屏的技术架构是什么样子的?flume→kafka→flink→redis,然后后端去 redis 里面捞数据,酱紫可行吗?
18、做一个统计指标的时候,需要在 Flink 的计算过程中多次读写 redis,感觉好怪,星主有没有好的方案?
19、Flink 使用场景大分析,列举了很多的常用场景,可以好好参考一下
20、将 kafka 中数据 sink 到 mysql 时,metadata 的数据为空,导入 mysql 数据不成功???
21、使用了 ValueState 来保存中间状态,在运行时中间状态保存正常,但是在手动停止后,再重新运行,发现中间状态值没有了,之前出现的键值是从 0 开始计数的,这是为什么?是需要实现 CheckpointedFunction 吗?
22、flink on yarn jobmanager 的 HA 需要怎么配置。还是说 yarn 给管理了
23、有两个数据流就行 connect,其中一个是实时数据流(kafka 读取 ),另一个是配置流。由于配置流是从关系型数据库中读取,速度较慢,导致实时数据流流入数据的时候,配置信息还未发送,这样会导致有些实时数据读取不到配置信息。目前采取的措施是在 connect 方法后的 flatmap 的实现的在 open 方法中,提前加载一次配置信息,感觉这种实现方式不友好,请问还有其他的实现方式吗?
24、Flink 能通过 oozie 或者 azkaban 提交吗?
25、不采用 yarm 部署 flink,还有其他的方案吗?主要想解决服务器重启后,flink 服务怎么自动拉起?jobmanager 挂掉后,提交的 job 怎么不经过手动重新提交执行?
26、在一个 Job 里将同份数据昨晚清洗操作后,sink 到后端多个地方(看业务需求),如何保持一致性?(一个 sink 出错,另外的也保证不能插入)
27、flink sql 任务在某个特定阶段会发生 tm 和 jm 丢失心跳,是不是由于 gc 时间过长呢,
28、有这样一个需求,统计用户近两周进入产品详情页的来源(1 首页大搜索,2 产品频道搜索,3 其他),为 php 后端提供数据支持,该信息在端上报事件中,php 直接获取有点困难。我现在的解决方案 通过 flink 滚动窗口(半小时),统计用户半小时内 3 个来源 pv,然后按照日期序列化,直接写 mysql。php 从数据库中解析出来,再去统计近两周占比。问题 1,这个需求适合用 flink 去做吗?问题 2,我的方案总感觉怪怪的,有没有好的方案?
29、一个 task slot 只能同时运行一个任务还是多个任务呢?如果 task slot 运行的任务比较大,会出现 OOM 的情况吗?
30、你们怎么对线上 flink 做监控的,如果整个程序失败了怎么自动重启等等
31、flink cep 规则动态解析有接触吗?有没有成型的框架?
32、每一个 Window 都有一个 watermark 吗?window 是怎么根据 watermark 进行触发或者销毁的?
33、CheckPoint 与 SavePoint 的区别是什么?
34、flink 可以在算子中共享状态吗?或者大佬你有什么方法可以共享状态的呢?
35、运行几分钟就报了,看 taskmager 日志,报的是 failed elasticsearch bulk request null,可是我代码里面已经做过空值判断了呀 而且也过滤掉了,flink 版本 1.7.2 es 版本 6.3.1
36、这种情况,我们调并行度 还是配置参数好
37、大家都用 jdbc 写,各种数据库增删查改拼 sql 有没有觉得很累,ps.set 代码一大堆,还要计算每个参数的位置
38、关于 datasource 的配置,每个 taskmanager 对应一个 datasource? 还是每个 slot? 实际运行下来,每个 slot 中 datasorce 线程池只要设置 1 就行了,多了也用不到?
39、kafka 现在每天出现数据丢失,现在小批量数据,一天 200W 左右, kafka 版本为 1.0.0,集群总共 7 个节点,TOPIC 有十六个分区,单条报文 1.5k 左右
40、根据 key.hash 的绝对值 对并发度求模,进行分组,假设 10 各并发度,实际只有 8 个分区有处理数据,有 2 个始终不处理,还有一个分区处理的数据是其他的三倍,如截图
41、flink 每 7 小时不知道在处理什么,CPU 负载 每 7 小时,有一次高峰,5 分钟内平均负载超过 0.8,如截图
42、有没有 Flink 写的项目推荐?我想看到用 Flink 写的整体项目是怎么组织的,不单单是一个单例子
43、Flink 源码的结构图
44、我想根据不同业务表(case when)进行不同的 redis sink(hash,set),我要如何操作?
45、这个需要清理什么数据呀,我把 hdfs 里面的已经清理了 启动还是报这个
46、在流处理系统,在机器发生故障恢复之后,什么情况消息最多会被处理一次?什么情况消息最少会被处理一次呢?
47、我检查点都调到 5 分钟了,这是什么问题
48、reduce 方法后 那个交易时间 怎么不是最新的,是第一次进入的那个时间,
49、Flink on Yarn 模式,用 yarn session 脚本启动的时候,我在后台没有看到到 Jobmanager,TaskManager,ApplicationMaster 这几个进程,想请问一下这是什么原因呢?因为之前看官网的时候,说 Jobmanager 就是一个 jvm 进程,Taskmanage 也是一个 JVM 进程
50、Flink on Yarn 的时候得指定 多少个 TaskManager 和每个 TaskManager slot 去运行任务,这样做感觉不太合理,因为用户也不知道需要多少个 TaskManager 适合,Flink 有动态启动 TaskManager 的机制吗。
51、参考这个例子,Flink 零基础实战教程:如何计算实时热门商品 | Jark’s Blog,窗口聚合的时候,用 keywindow,用的是 timeWindowAll,然后在 aggregate 的时候用 aggregate(new CustomAggregateFunction(), new CustomWindowFunction()),打印结果后,发现窗口中一直使用的重复的数据,统计的结果也不变,去掉 CustomWindowFunction() 就正常了?非常奇怪
52、用户进入产品预定页面(端埋点上报),并填写了一些信息(端埋点上报),但半小时内并没有产生任何订单,然后给该类用户发送一个 push。1. 这种需求适合用 flink 去做吗?2. 如果适合,说下大概的思路
53、业务场景是实时获取数据存 redis,请问我要如何按天、按周、按月分别存入 redis 里?(比方说过了一天自动换一个位置存 redis)
54、有人 AggregatingState 的例子吗, 感觉官方的例子和 官网的不太一样?
55、flink-jdbc 这个 jar 有吗?怎么没找到啊?1.8.0 的没找到,1.6.2 的有
56、现有个关于 savepoint 的问题,操作流程为,取消任务时设置保存点,更新任务,从保存点启动任务;现在遇到个问题,假设我中间某个算子重写,原先通过 state 编写,有用定时器,现在更改后,采用窗口,反正就是实现方式完全不一样;从保存点启动就会一直报错,重启,原先的保存点不能还原,此时就会有很多数据重复等各种问题,如何才能保证数据不丢失,不重复等,恢复到停止的时候,现在想到的是记下 kafka 的偏移量,再做处理,貌似也不是很好弄,有什么解决办法吗
57、需要在 flink 计算 app 页面访问时长,消费 Kafka 计算后输出到 Kafka。第一条 log 需要等待第二条 log 的时间戳计算访问时长。我想问的是,flink 是分布式的,那么它能否保证执行的顺序性?后来的数据有没有可能先被执行?
58、我公司想做实时大屏,现有技术是将业务所需指标实时用 spark 拉到 redis 里存着,然后再用一条 spark streaming 流计算简单乘除运算,指标包含了各月份的比较。请问我该如何用 flink 简化上述流程?
59、flink on yarn 方式,这样理解不知道对不对,yarn-session 这个脚本其实就是准备 yarn 环境的,执行 run 任务的时候,根据 yarn-session 初始化的 yarnDescription 把 flink 任务的 jobGraph 提交到 yarn 上去执行
60、同样的代码逻辑写在单独的 main 函数中就可以成功的消费 kafka,写在一个 spring boot 的程序中,接受外部请求,然后执行相同的逻辑就不能消费 kafka。你遇到过吗?能给一些查问题的建议,或者在哪里打个断点,能看到为什么消费不到 kafka 的消息呢?
61、请问下 flink 可以实现一个流中同时存在订单表和订单商品表的数据 两者是一对多的关系 能实现得到 以订单表为主 一个订单多个商品 这种需求嘛
62、在用中间状态的时候,如果中间一些信息保存在 state 中,有没有必要在 redis 中再保存一份,来做第三方的存储。
63、能否出一期 flink state 的文章。什么场景下用什么样的 state?如,最简单的,实时累加 update 到 state。
64、flink 的双流 join 博主有使用的经验吗?会有什么常见的问题吗
65、窗口触发的条件问题
66、flink 定时任务怎么做?有相关的 demo 么?
67、流式处理过程中数据的一致性如何保证或者如何检测
68、重启 flink 单机集群,还报 job not found 异常。
69、kafka 的数据是用 org.apache.kafka.common.serialization.ByteArraySerialize 序列化的,flink 这边消费的时候怎么通过 FlinkKafkaConsumer 创建 DataStream<String>?
70、现在公司有一个需求,一些用户的支付日志,通过 sls 收集,要把这些日志处理后,结果写入到 MySQL,关键这些日志可能连着来好几条才是一个用户的,因为发起请求,响应等每个环节都有相应的日志,这几条日志综合处理才能得到最终的结果,请问博主有什么好的方法没有?
71、flink 支持 hadoop 主备么?hadoop 主节点挂了 flink 会切换到 hadoop 备用节点?
72、请教大家: 实际 flink 开发中用 scala 多还是 java 多些?刚入手 flink 大数据 scala 需要深入学习么?
73、我使用的是 flink 是 1.7.2 最近用了 split 的方式分流,但是底层的 SplitStream 上却标注为 Deprecated,请问是官方不推荐使用分流的方式吗?
74、KeyBy 的正确理解,和数据倾斜问题的解释
75、用 flink 时,遇到个问题 checkpoint 大概有 2G 左右,有背压时,flink 会重启有遇到过这个问题吗
76、flink 使用 yarn-session 方式部署,如何保证 yarn-session 的稳定性,如果 yarn-session 挂了,需要重新部署一个 yarn-session,如何恢复之前 yarn-session 上的 job 呢,之前的 checkpoint 还能使用吗?
77、我想请教一下关于 sink 的问题。我现在的需求是从 Kafka 消费 Json 数据,这个 Json 数据字段可能会增加,然后将拿到的 json 数据以 parquet 的格式存入 hdfs。现在我可以拿到 json 数据的 schema,但是在保存 parquet 文件的时候不知道怎么处理。一是 flink 没有专门的 format parquet,二是对于可变字段的 Json 怎么处理成 parquet 比较合适?
78、flink 如何在较大的数据量中做去重计算。
79、flink 能在没有数据的时候也定时执行算子吗?
80、使用 rocksdb 状态后端,自定义 pojo 怎么实现序列化和反序列化的,有相关 demo 么?
81、check point 老是失败,是不是自定义的 pojo 问题?到本地可以,到 hdfs 就不行,网上也有很多类似的问题 都没有一个很好的解释和解决方案
82、cep 规则如图,当 start 事件进入时,时间 00:00:15,而后进入 end 事件,时间 00:00:40。我发现规则无法命中。请问 within 是从 start 事件开始计时?还是跟 window 一样根据系统时间划分的?如果是后者,请问怎么配置才能从 start 开始计时?
83、Flink 聚合结果直接写 Mysql 的幂等性设计问题
84、Flink job 打开了 checkpoint,用的 rocksdb,通过观察 hdfs 上 checkpoint 目录,为啥算副本总量会暴增爆减
85、[Flink 提交任务的 jar 包可以指定路径为 HDFS 上的吗]()
86、在 flink web Ui 上提交的任务,设置的并行度为 2,flink 是 stand alone 部署的。两个任务都正常的运行了几天了,今天有个地方逻辑需要修改,于是将任务 cancel 掉 (在命令行 cancel 也试了),结果 taskmanger 挂掉了一个节点。后来用其他任务试了,也同样会导致节点挂掉
87、一个配置动态更新的问题折腾好久(配置用个静态的 map 变量存着,有个线程定时去数据库捞数据然后存在这个 map 里面更新一把),本地 idea 调试没问题,集群部署就一直报 空指针异常。下游的算子使用这个静态变量 map 去 get key 在集群模式下会出现这个空指针异常,估计就是拿不到 map
88、批量写入 MySQL,完成 HBase 批量写入
89、用 flink 清洗数据,其中要访问 redis,根据 redis 的结果来决定是否把数据传递到下流,这有可能实现吗?
90、监控页面流处理的时候这个发送和接收字节为 0。
91、[sink 到 MySQL,如果直接用 idea 的话可以运行,并且成功,大大的代码上面用的 FlinkKafkaConsumer010,而我的 Flink 版本为 1.7,kafka 版本为 2.12,所以当我用 FlinkKafkaConsumer010 就有问题,于是改为
FlinkKafkaConsumer 就可以直接在 idea 完成 sink 到 MySQL,但是为何当我把该程序打成 Jar 包,去运行的时候,就是报 FlinkKafkaConsumer 找不到呢 ](https://t.zsxq.com/MN7iuZf)
92、SocketTextStreamWordCount 中输入中文统计不出来,请问这个怎么解决,我猜测应该是需要修改一下代码,应该是这个例子默认统计英文
93、Flink 应用程序本地 ide 里面运行的时候并行度是怎么算的?
等等等,还有很多,复制粘贴的我手累啊 ????
另外里面还会及时分享 Flink 的一些最新的资料(包括数据、视频、PPT、优秀博客,持续更新,保证全网最全,因为我知道 Flink 目前的资料还不多)
关于自己对 Flink 学习的一些想法和建议
Flink 全网最全资料获取,持续更新,点击可以获取
再就是星球用户给我提的一点要求:不定期分享一些自己遇到的 Flink 项目的实战,生产项目遇到的问题,是如何解决的等经验之谈!
1、如何查看自己的 Job 执行计划并获取执行计划图
2、当实时告警遇到 Kafka 千万数据量堆积该咋办?
3、如何在流数据中比两个数据的大小?多种解决方法
4、kafka 系列文章
5、Flink 环境部署、应用配置及运行应用程序
6、监控平台该有架构是长这样子的
7、《大数据“重磅炸弹”——实时计算框架 Flink》专栏系列文章目录大纲
8、《大数据“重磅炸弹”——实时计算框架 Flink》Chat 付费文章
9、Apache Flink 是如何管理好内存的?
10、Flink On K8s
当然,除了更新 Flink 相关的东西外,我还会更新一些大数据相关的东西,因为我个人之前不是大数据开发,所以现在也要狂补些知识!总之,希望进来的童鞋们一起共同进步!
1、Java 核心知识点整理.pdf
2、假如我是面试官,我会问你这些问题
3、Kafka 系列文章和学习视频
4、重新定义 Flink 第二期 pdf
5、GitChat Flink 文章答疑记录
6、Java 并发课程要掌握的知识点
7、Lightweight Asynchronous Snapshots for Distributed Dataflows
8、Apache Flink™- Stream and Batch Processing in a Single Engine
9、Flink 状态管理与容错机制
10、Flink 流批一体的技术架构以及在阿里 的实践
11、Flink Checkpoint- 轻量级分布式快照
12、Flink 流批一体的技术架构以及在阿里 的实践
13、Stream Processing with Apache Flink pdf