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());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM