Flink支援不同的重新開機政策,可以控制在發生故障時如何重新開機新啟動作業。
預設重新開機政策是通過Flink的配置檔案設定的flink-conf.yaml。配置參數restart-strategy定義采用的政策。
如果未啟用檢查點,則使用“無重新開機”政策。如果激活了檢查點并且尚未配置重新開機政策,則固定延遲政策将用于 Integer.MAX_VALUE重新開機嘗試。
重新開機政策分為:固定延遲重新開機政策、故障率重新開機政策、無重新開機政策、後備重新開機政策。
1.固定延遲重新開機政策
固定延遲重新開機政策是嘗試給定次數重新啟動作業。如果超過最大嘗試次數,則作業失敗。在兩次連續重新開機嘗試之間,會有一個固定的延遲等待時間。
通過在flink-conf.yaml中配置參數:
fixed-delay:固定延遲政策
restart-strategy: fixed-delay
嘗試5次,預設Integer.MAX_VALUE
restart-strategy.fixed-delay.attempts: 5
設定延遲時間10s,預設為 akka.ask.timeout時間
restart-strategy.fixed-delay.delay: 10s
2.故障率重新開機政策
故障率重新開機政策在故障後重新作業,當設定的故障率(failure rate)超過每個時間間隔的故障時,作業最終失敗。在兩次連續重新開機嘗試之間,重新開機政策延遲等待一段時間。
在flink-conf.yaml檔案配置
設定重新開機政策為failure-rate
restart-strategy: failure-rate
失敗作業之前的給定時間間隔内的最大重新開機次數,預設1
restart-strategy.failure-rate.max-failures-per-interval: 3
測量故障率的時間間隔。預設1min
restart-strategy.failure-rate.failure-rate-interval: 5min
兩次連續重新開機嘗試之間的延遲,預設akka.ask.timeout時間
restart-strategy.failure-rate.delay: 10s
在代碼中設定:
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// 3為最大失敗次數;5min為測量的故障時間;10s為2次間的延遲時間
env.setRestartStrategy(RestartStrategies.failureRateRestart(3,Time.of(5, TimeUnit.MINUTES),Time.of(10, TimeUnit.SECONDS)));
3.無重新開機政策
作業直接失敗,不嘗試重新開機。
在flink-conf.yaml中配置:
restart-strategy: none
在代碼中實作:
env.setRestartStrategy(RestartStrategies.noRestart());
4.後備重新開機政策
使用群集定義的重新啟動政策。這對于啟用檢查點的流式傳輸程式很有幫助。預設情況下,如果沒有定義其他重新開機政策,則選擇固定延遲重新開機政策。
本文來源于:奈學開發者社群,如有侵權,請聯系我删除~