Flink On YARN 基於yarn-cluster的HA配置&Flink常見問題


一、背景

在Flink開發中,上線的任務經常會無故掛掉,剛開始對任務無故掛掉的原因,一無所知,排查起來也比較困難,網上資料也比較模糊不清,后面通過查閱資料和自己的一些經驗,總算是有了一些結果,所以想總結一下近段時間所遇到的問題和解決方法。

二、問題陳列

  1.Flink On YARN中任務掛掉后,YARN的Web UI顯示還在運行,但實際上已經掛掉了

    原因:這是由於Flink提交給YARN之后,YARN后續並沒有繼續監控Flink任務的狀態

    解決辦法:在提交任務時,命令行加一個參數 -d 即可,例如:run -m yarn-cluster  -d -p 2  -yn 2  -yjm 1024m -ytm 2048m  -ynm  xxxx -c xxxx

  2.java.lang.Exception: Container released on a *lost* node

         

   原因:YARN隊列壓力過大或者磁盤滿了之后,可能會導致Flink申請的節點標記為失敗,導致taskmanager掛掉

   解決辦法:如果有配置重啟策略的話,taskmanager會進行重啟,如果沒有配置重啟策略但是配置了checkpoint,默認的重啟策略是無限次重啟,但是需要注意一點的是,taskmananger成功重啟的前提是jobmanager沒有掛掉,如果jobmanager也掛掉了,那么taskmanager重啟成功之后也是無效的。

  3.生產上的任務頻繁掛掉,一開始以為是問題二導致的,但是實際上問題二配置了checkpoint或者重啟策略之后會自己重啟,所以證明主要原因並不是以上的問題,其實主要的原因就是當YARN的隊列資源緊張的時候,也有可能導致jobmanager掛掉,我們生產上的集群並沒有配置Flink On YARN的高可用,即jobmanager掛掉之后是不會進行重啟的,所以需要配置Flink On YARN的高可用,配置如下(此配置適用於Flink On YARN的yarn-cluster模式):

    1)首先配置 yarn-site.xml,配置resourcemanager重啟次數

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

    2)配置flink-conf.yaml ,這里必須添加zookeeper 信息,官方文檔yarn-cluster模式只要求添加重啟參數,不添加的話,task manager 會和job manager 一起掛掉, 只會重啟對應的job manager 

# flink job manager次數  這個參數必須小於yarn.resourcemanager.am.max-attempts 
yarn.application-attempts: 3
# 添加zookeeper 配置
high-availability: zookeeper
high-availability.zookeeper.quorum: xx.x.x.xxx:2181
# job manager元數據在文件系統儲存的位置
high-availability.storageDir: hdfs:///flink/recovery  

三、測試

1.啟動flink 程序

       

2. kill 掉對應的 YarnSessionClusterEntrypoint (對應job manager)所在進程

  

 3.新的job manager,已經被重啟,恰巧也和task Manager一個一個節點

 

4.task manager 上對應日志如上,與舊的job manager 的ResourceManager通信,當超時大於10s后,將其標記為失敗,之后根據zookeeper去注冊到新的job manager 

注:此配置只能降低Flink的失敗次數,如果想讓Flink穩定運行,應該還是需要在YARN上單獨划分一個隊列給實時任務使用,避免因其他因素導致實時任務失敗

參考文檔:https://blog.csdn.net/yumingzhu1/article/details/118994625

官方文檔:https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/jobmanager_high_availability.html#configuration-1

 


免責聲明!

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



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