1. 程式人生 > 其它 >Flink重啟策略 flink出現異常重新拉起任務

Flink重啟策略 flink出現異常重新拉起任務

重啟策略概念:

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: 3
restart-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());