1. flink checkpoint了解吗?
Flink Checkpoint 是一种容错恢复机制。这种机制保证了实时程序运行时,即使突然遇到异常或者机器问题时也能够进行自我恢复。Flink Checkpoint 对于用户层面来说,是透明的,用户会感觉实时任务一直在运行。
Flink Checkpoint 是 Flink 自身的系统行为,用户无法对其进行交互,用户可以在程序启动之前,设置好实时任务 Checkpoint 相关的参数,当任务启动之后,剩下的就全交给 Flink 自行管理。
flink checkpoint 提供了三种可用的状态后端:MemoryStateBackend,FsStateBackend和RocksDBStateBackend。
• MemoryStateBackend
内存级的状态后端,会将键控状态作为内存中的对象进行管理,将它们存储在 TaskManager 的 JVM 堆上;而将 checkpoint 存储在 JobManager 的内存中。
• FsStateBackend
将 checkpoint 存到远程的持久化文件系统(FileSystem)上。而对于本地状态,跟 MemoryStateBackend 一样,也会存在 TaskManager 的 JVM 堆上。
• RocksDBStateBackend
将所有状态序列化后,存入本地的 RocksDB 中存储。
2. flink反压了解吗?如何处理反压?
整个Flink 的反压是从下游往上游传播的,一直传播到Source Task,Source Task 有压力后,会降低从外部组件中读取数据的速率,例如:Source Task 会降低从Kafka 中读取数据的速率,来降低整个Flink Job 中缓存的数据,从而降低负载。
https://segmentfault.com/a/1190000038561714
3. flink水印说说?
waterMark是一种衡量Event Tiem进展机制。Watermark是用于处理乱序事件的,而正确的处理乱序事件,通常用Watermark机制结合window来实现。 数据流中的Watermark用于表示timestamp小于Watermark的数据,都已经到达了,因此,window的执行也是由Watermark触发的。 Watermark可以理解成一个延迟触发机制,我们可以设置Watermark的延时时长t,每次系统会校验已经到达的数据中最大的maxEventTime,然后认定eventTime小于maxEventTime - t的所有数据都已经到达,如果有窗口的停止时间等于maxEventTime – t,那么这个窗口被触发执行。
当Flink接收到数据时,会按照一定的规则去生成Watermark,这条Watermark就等于当前所有到达数据中的maxEventTime - 延迟时长,也就是说,Watermark是由数据携带的,一旦数据携带的Watermark比当前未触发的窗口的停止时间要晚,那么就会触发相应窗口的执行。由于Watermark是由数据携带的,因此,如果运行过程中无法获取新的数据,那么没有被触发的窗口将永远都不被触发。
AssignerWithPeriodicWatermarks AssignerWithPunctuatedWatermarks迟到事件处理:
- 重新激活已经关闭的窗口并重新计算以修正结果。
- 将迟到事件收集起来另外处理。
- 将迟到事件视为错误消息并丢弃。
https://zhuanlan.zhihu.com/p/364013202
4. flink重启策略。默认有什么问题?
Flink支持不同的重启策略,可以控制在发生故障时如何重启新启动作业。
默认重启策略是通过Flink的配置文件设置的flink-conf.yaml。配

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



