Flink重啟策略 flink出現異常重新拉起任務
阿新 • • 發佈:2021-08-12
重啟策略概念:
Flink支援不同的重啟策略,可以控制在發生故障時如何重啟新啟動作業。
重啟策略分類:
重啟策略 | 重啟策略值 | 描述 | 預設值 |
---|---|---|---|
Fixed delay | fixed-delay | 嘗試一個給定的次數來重啟Job,如果超過了最大的重啟次數,Job最終將失敗。 | 啟用 checkpointing,但沒有配置重啟策略,則使用固定間隔 (fixed-delay) 策略,預設值為Integer.MAX_VALUE |
Failure rate | failure-rate | 失敗率重啟策略在Job失敗後會重啟,但是超過失敗率後,Job會最終被認定失敗。 | |
No restart | None | Job直接失敗,不會嘗試進行重啟 | 沒有啟用 checkpointing,則使用無重啟 (no restart) 策略 |
重啟策略核心點:
1)重啟策略,都有重試次數和重試之間等待時間的規定,不同點在於,分別限定了最大的失敗次數和規定時間內失敗次數。具體根據場景設定
2)重啟策略開啟後,如果程式有異常出現,多數情況會出現與第三方互動的地方連線異常情況,類似mysql kafka等連線失敗,沒有一定經驗不好定位問題。
重啟策略設定:
固定間隔策略:
1 全域性配置 flink-conf.yaml,表示每10s重試一次,最多重試3次
restart-strategy: fixed-delay restart-strategy.fixed-delay.attempts: 3 restart-strategy.fixed-delay.delay: 10 s
2應用程式碼設定:
env.setRestartStrategy(RestartStrategies.fixedDelayRestart( 3, // 嘗試重啟的次數 Time.of(10, TimeUnit.SECONDS)) // 間隔 );
失敗率策略:
1全域性配置 flink-conf.yaml,5分鐘內若失敗了3次則認為該job失敗,重試間隔為10s
restart-strategy: failure-rate restart-strategy.failure-rate.max-failures-per-interval: 3restart-strategy.failure-rate.failure-rate-interval: 5 min restart-strategy.failure-rate.delay: 10 s
2應用程式碼設定:
env.setRestartStrategy(RestartStrategies.failureRateRestart( 3, //一個時間段內的最大失敗次數 Time.of(5, TimeUnit.MINUTES), // 衡量失敗次數的是時間段 Time.of(10, TimeUnit.SECONDS)) // 間隔 );
無策略:
1全域性配置 flink-conf.yaml
restart-strategy: none
2應用程式碼設定:
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.setRestartStrategy(RestartStrategies.noRestart());