========= 基础 =========
1、Flink 的 抽象层次有几种
Stateful stream processing
Core API
Table
SQL
2、Window 类型
(1)TimeWindow
Tumbling Window(滚动窗口)
Sliding Window(滑动窗口)
Session Window(会话窗口)
Global Window(全局窗口)
(2)countWindow
(3)自定义window
3、Time 类型
事件时间、注入时间和Processing Time
4、Checkpoint的理解
- 轻量级容错机制(全局异步,局部同步)
- 保证exactly-once 语义
- 用于内部失败的恢复
- 基本原理:通过往source 注入barrier,barrier作为checkpoint的标志
5、Savepoint
- 流处理过程中的状态历史版本
- 具有可以replay的功能
- 外部恢复(应用重启和升级)
- 两种方式触发:Cancel with savepoint,手动主动触发
$s bin/flink savepoint :jobId [:targetDirectory]
$ bin/flink cancel -s [:targetDirectory] :jobId
6、Flink runtime architecture
- Job Manager
- Task Manger
- Client
- 角色间的通信(Akka)
- 数据的传输(Netty)
7、什么是solts
solts :槽,slot 的数量通常与每个 TaskManager 的可用 CPU 内核数成比例。
一般情况下你的 slot 数是你每个 TaskManager 的 cpu 的核数。
8、什么是状态
- Definition
task/operator在某个时刻的中间结果
Snapshot
- Effect:记录状态并且在失败时用于恢复
- Basic type:Operator state、Keyed state
9、RestartStrategies
https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/restart_strategies.html
4种重启策略
10、statebacked有几种(3种)
https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/state/state_backends.html
//env.setStateBackend(new MemoryStateBackend());
//env.setStateBackend(new FsStateBackend("hdfs://hadoop100:9000/flink/checkpoints"));
//env.setStateBackend(new RocksDBStateBackend("hdfs://hadoop100:9000/flink/checkpoints",true));
11、运行模式
Job模式
独享Dispatcher和ResourceManager
资源按需申请
适合⼤大作业
Session模式
共享Dispatcher和ResourceManager
共⽤用TaskManager
适合规模⼩小,运⾏行行时间短的作业
12、全量聚合和增量聚合 window
全量聚合:ProcessWindowFunction
增量聚合:ReduceFunction、AggregateFunction、FoldFunction
========= 进阶 =========
1、4种方法调优Flink
https://www.iteblog.com/archives/2303.html
2、flink kafka consumer 正则消费,多分区动态发现
https://www.cnblogs.com/dajiangtai/p/10676773.html
3、Flink 的trigger 有几种
https://juejin.im/post/5c317c366fb9a049f3624086
4、Flink job 有多少种状态
https://ci.apache.org/projects/flink/flink-docs-stable/internals/job_scheduling.html#scheduling