栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Flink】 Flink 相关知识点以及踩坑记录

【Flink】 Flink 相关知识点以及踩坑记录

1、 Flink任务调度原理之逻辑数据流与执行图

2、Flink检查点(checkpoint)、保存点(savepoint)的区别与联系

(1) checkpoint面向Flink Runtime本身,由Flink的各个TaskManager定时触发快照并自动清理,一般不需要用户干预;savepoint面向用户,完全根据用户的需要触发与清理。
(2) checkpoint是支持增量的(通过RocksDB),特别是对于超大状态的作业而言可以降低写入成本。savepoint并不会连续自动触发,所以savepoint没有必要支持增量。

2.1 checkpoint的代码实现

参考链接:https://blog.csdn.net/aa1215018028/article/details/93159049

3、 Flink Checkpoint 原理

4、 State 存储方式

三种状态后端的介绍:
MemoryStateBackend 默认,小状态,本地调试使用
FsStateBackend 大状态,长窗口,高可用场景
RocksDBStateBackend 超大状态,长窗口,高可用场景,可增量checkpoint
参考链接:https://www.cnblogs.com/YuanWeiBlogger/p/12072782.html

5、 并行度

slot 是指 taskmanager 的并发执行能力
parallelism 是指 taskmanager 实际使用的并发能力
max parallelism : 最大并行度,最大并行度的默认设置大致为operatorParallelism+(operatorParallelism/2),下限为128,上限为32768。
如果要使用保存点,还应考虑设置最大并行度(或最大并行度)。从保存点还原时,可以更改特定运算符或整个程序的并行度,此设置指定并行度的上限。这是必需的,因为Flink在内部将状态划分为键组,并且我们不能有无限个键组,因为这将对性能有害。
注意:将最大并行度设置为非常大的值可能会对性能造成不利影响,因为某些状态后端必须保持内部数据结构随密钥组的数量而扩展(这是可重缩放状态的内部实现机制)

6、 重启策略

(1) 为什么需要 RestartStrategy?
重启策略会让 Job 从上一次完整的 Checkpoint 处恢复状态,保证 Job 和挂之前的状态保持一致,另外还可以让 Job 继续处理数据,不会出现 Job 挂了导致消息出现大量堆积的问题,合理的设置重启策略可以减少 Job 不可用时间和避免人工介入处理故障的运维成本,因此重启策略对于 Flink Job 的稳定性来说有着举足轻重的作用。
(2)如何配置 RestartStrategy?
默认重启策略可以在 Flink 的配置文件 flink-conf.yaml 中设置,由 restart-strategy 参数控制,有 fixed-delay(固定延时重启策略)、failure-rate(故障率重启策略)、none(不重启策略)三种可以选择,如果选择的参数不同,对应的其他参数也不同。

7、 Flink的背压机制
在流式处理系统中,如果出现下游消费的速度跟不上上游生产数据的速度,就种现象就叫做反压。出现反压时,理所应当限制上游生产者的速度,使得下游的速度跟得上上游的速度。
反压会导致流处理作业数据延迟的增加,同时还会影响到Checkpoint。由于Flink的Checkpoint机制需要进行Barrier对齐,如果此时某个Task出现了反压,Barrier流动的速度就会变慢,导致Checkpoint整体时间变长,如果反压很严重,还有可能导致Checkpoint超时失败。
长期或者频繁出现反压才需要处理,如果只是由于网络波动或者正常GC出现的偶尔反压可以不必处理。

原文链接:https://blog.csdn.net/zc19921215/article/details/109246591

常见API

(1) Split
Flink 中不支持连续的 Split/Select 分流操作,要实现连续分流也可以通过其他的方式(split + filter 或者 side output)来实现。
本篇文章连接是:http://www.54tianzhisheng.cn/2019/06/12/flink-split/
(2) 2. 闭包问题,导致程序无法运行
对DataStream进行null值过滤,即使用filter(x -> x != null),然后手贱点了下IDEA的自动优化,将代码改为filter(Objects::notNull),然后代码就不能正常消费了,后续改回来,又能正常消费了。
原文链接:https://blog.csdn.net/zc19921215/article/details/105940242

遗留问题 参考链接:

(1) Flink任务调度原理之逻辑数据流与执行图https://blog.csdn.net/qq_39657909/article/details/105957694
(2)Flink检查点(checkpoint)、保存点(savepoint)的区别与联系:https://blog.csdn.net/nazeniwaresakini/article/details/104649508/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号