========= 基礎 =========
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有幾種
https://juejin.im/post/5bfa845f6fb9a049c30ae86c
//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
適合規模⼩小,運⾏行行時間短的作業
========= 進階 =========
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