Flink on yarn HA 配置


先看下官網對Flink 各個組件的描述:https://ci.apache.org/projects/flink/flink-docs-release-1.10/concepts/runtime.html#job-managers-task-managers-clients

 

 啟動流程。

Flink 的 checkpoint 可以保證任務在遇到異常的時候,可以自動從上一個checkpoint 的狀態恢復,保障任務的正常的運行,這應該是大家都知道的事情。

上面的異常,指的是執行計算任務的 taskmanager 的異常,如果是jobmanager 遇到異常是不能自動恢復的。(因為需要恢復的元數據、執行圖、各種端口、路徑都是jobmanager 管理的,jobmanager 死了,就都沒有了)

下面內容來自官網:https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/jobmanager_high_availability.html

JobManager協調每個Flink部署。它既負責調度負責資源管理

默認情況下,每個Flink集群只有一個JobManager實例。這將創建一個單點故障(SPOF):如果JobManager崩潰,則無法提交任何新程序,並且正在運行的程序也會失敗。

使用JobManager高可用性,您可以從JobManager故障中恢復,從而消除SPOF您可以為獨立群集YARN群集配置高可用性

在運行高可用的YARN群集時,我們不會運行多個JobManager(ApplicationMaster)實例,而只能運行一個實例,當實例出現故障時,YARN會重新啟動該實例。 確切的行為取決於您使用的特定YARN版本。

配置 yarn-site.xml 

<property>
  <name>yarn.resourcemanager.am.max-attempts</name>
  <value>4</value>
  <description>
    The maximum number of application master execution attempts.
  </description>
</property>

注:重試次數最大為 4次,默認為 2(允許單個jobmanager的故障)

不同的hadoop版本上,yarn container 有不同的異常恢復行為:

  •      YARN 2.3.0 < version < 2.4.0:所以container重啟
  •      YARN 2.4.0 < version < 2.6.0mastercontainer掛了,taskmanagercontainer可以繼續執行;恢復更快
  •      YARN 2.6.0 <= version:根據Flink配置,只有任務在一定時間內連續嘗試了一定次數才會被kill

flink-conf.yaml 配置:

high-availability: zookeeper
high-availability.zookeeper.quorum: localhost:2181
high-availability.storageDir: hdfs:///flink/recovery
high-availability.zookeeper.path.root: /flink
yarn.application-attempts: 10

具體配置就這樣的,官網都有描述。

關於測試,我起了下面這么一個簡單的任務:讀kafka,寫kafka

 

 測試內容是:在有無 checkpoint、有無 HA 的情況下 kill  taskmanager 和 jobmanager

測試用例和測試結果如下:

1、無checkpoint 
    kill taskmanager : 直接掛掉

2、有checkpoint
    1、先不配置HA
        kill taskmanager : 
            1 次:回退上一次checkpoint, taskmanager 遷移,jobmanager 不遷移  (可配置精確一次)
            2 次:回退上一次checkpoint, taskmanager 遷移,jobmanager 不遷移 
            3 次:

        kill jobmanager : 
            1 次: 直接掛掉

    2、配置HA
        kill taskmanager : 
            1 次:回退上一次checkpoint, taskmanager 遷移,jobmanager 不遷移 
            2 次:回退上一次checkpoint, taskmanager 遷移,jobmanager 不遷移 
        kill jobmanager : 
            1 次:taskmanager 正常寫數據,webui 短時不能訪問,jobmanager 恢復后,會遷移,tm 會從checkpoint 恢復一次
            2 次:taskmanager 正常寫數據,webui 短時不能訪問,jobmanager 恢復后,會遷移,tm 會從checkpoint 恢復一次
            3 次:同上


taskmanager kill 次數: 10 任務運行正常
jobmanager  kill 次數: 10 任務運行正常 # yarn 和 flink 的重試次數都是短時間內的嘗試,如果任務已經正常運行一段時間就重新計數了

重啟yarn 頁面:

Flink 1.10 啟動比較快,看不到這個頁面了:

 

 

搞定

關於checkpoint 重啟,精確一次的測試,可以參考下一篇  Flink kafka connector 端到端精確一次測試  (還沒寫,寫了回來更新)

 

歡迎關注Flink菜鳥公眾號,會不定期更新Flink(開發技術)相關的推文


免責聲明!

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



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