Flink有3中運行模式,分別是STREAMING,BATCH和AUTOMATIC
Ref
https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/dev/datastream_execution_mode.html
1.STREAMING運行模式 是DataStream默認的運行模式
2.BATCH運行模式 也可以在DataStream API上運行
3.AUTOMATIC運行模式 是讓系統根據source類型自動選擇運行模式
可以通過命令行來配置運行模式
bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar
也可以在代碼中配置
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setRuntimeMode(RuntimeExecutionMode.BATCH);
在STREAMING運行模式中,Flink使用StateBackend來控制狀態存儲和checkpoint的工作,RocksDBStateBackend支持增量Checkpoint,其他2個不支持
在BATCH運行模式中,statebackend是被忽略的,batch模式不支持checkpoint
Flink支持3種狀態后端(StateBackend),其中
1.MemoryStateBackend 2.FsStateBackend 3.RocksDBStateBackend
何時使用 RocksDBStateBackend
1.RocksDBStateBackend 最適合用於處理大狀態,長窗口,或大鍵值狀態的有狀態處理任務。 2.RocksDBStateBackend 非常適合用於高可用方案。 3.RocksDBStateBackend 是目前唯一支持增量 checkpoint 的后端。增量 checkpoint 非常使用於超大狀態的場景。
StateBackend可以參考
【flink】flink狀態后端配置-設置State Backend
從RocksDBStateBackend講述Flink的State機制
在STREAMING運行模式中,flink使用checkpoint來進行容錯,checkpoint參考
https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/dev/stream/state/checkpointing.html
在BATCH運行模式中,flink會回滾到到之前的stage,只有失敗的task才會重啟,這比從checkpoint重啟所以的task要高效,所以建議如果任務能在BATCK運行模式下運行,就使用BATCH運行模式
Broadcast State
1. STREAMING運行模式,一個典型應用就是允許一個控制流接收一個rules,並將其廣播到其他的stream中
2. BATCH運行模式不支持