Flink使用(三)——記一次Flink Session任務反覆重啓

前言

  環境: JDK 1.8+Flink 1.6+Hadoop 2.7.3html

  文中如有表述不正確,歡迎大夥留言指出,謝謝!node

一、現象

  使用yarn-session在yarn上啓動flink集羣並提交任務後,在Flink Web UI 上發現任務的state個數每十分鐘左右會從0到10左右後又重複從0開始,但輸出的結果沒有問題。web

二、分析過程

  2.1 檢查checkpoint過程(不是最終緣由

  最開始覺得是checkpoint的狀態(RockDB方式)未設置好,檢查配置未發現問題。使用yarn logs命令查找任務日誌,發現沒有沒有Error,詳細分析日誌發現:apache

1 INFO:yarn.YarnApplicationMasterRunner:RECEIVER SIGNAL 15: SIGTERM. Shutting down as requested

   操做系統爲何會發送請求kill掉容器了?從日誌中沒有找到有用信息,在網上查找前輩們的使用經驗[1],發現當任務邏輯中有keyBy(key),其key變化時會致使窗口狀態沒法清理致使物理內存溢出容器被kill,可是咱們的checkpoint的狀態個數到10左右就又從新從0開始,並且每一個state的大小隻有幾KB,因此能夠排除是由於物理內存溢出致使的。瀏覽器

  2.2 虛擬內存溢出(不是最終緣由

  既然從任務日誌自己沒有發現問題,容器又被kill掉,因此打算從容器的日誌出發去分析緣由。分析容器自己的日誌,就要去查看yarn的對應日誌,經過任務日誌中獲取的容器信息找到集羣對應的節點而後再分析對應時間短的容器日誌,發現虛擬內存超過了申請,以下:session

  虛擬內存通常是申請內存的2.1倍(Hadoop中默認),博主爲每一個容器申請的內存爲1G,因此對應的虛擬內存是2.1G,遇到這種狀況最好的解決辦法是擴大申請的資源好比2G,擴大資源後發現問題仍是存在。爲何會用到這麼多虛擬內存了?組裏的前輩提示多是JDK 1.8內存模型的緣由,可是申請1G以前是能夠測試的,並且我測試僅使用yarn-session在yarn上申請Flink集羣,但不提交任務,問題仍是存在,因此沒有沿着這個方向去分析(後續仍是得擴展學習的)。 oop

  在yarn的任務頁面查看任務的狀態時發現其有多個Attempt ID,其對應web UI和端口都是變化的,具體以下圖:學習

    AM爲何會重啓這麼屢次了?AM的重啓的最大次數是由yarn.resourcemanager.am.max-attempts肯定,而集羣中該參數爲2。說明該參數未生效。測試

  2.3 繼續容器日誌分析

  繼續分析容器日誌發現以下:spa

   容器10min會timeout被幹掉,該值是由yarn上yarn.resourcemanager.container.liveness-monitor.interval-ms=600000ms(yarn-default.xml)肯定的[2],到此,10min state重啓的緣由找到了,可是爲何AM重啓的次數未被限制住了?在日誌中找到信息以下:

   從日誌中發現,任務重啓次數是統計在10秒鐘中任務重啓的次數,超過10重啓的次數就不會被統計,該值在Flink中是由akka.ask.timeout=10s決定的[3]。到此,AM屢次重啓的緣由也找到了。可是,是什麼緣由致使的AM失敗仍是沒有找到,後臺找到ERROR以下:

    該信息僅顯示NodeManager的心跳信息未上報成功,但緣由未知。

三、嘗試輸出yarn對應類的Debug信息

  設置是在瀏覽器中yarn的ResourceManager active 節點的8088端口後加上logLevel,如:127.0.0.1:8088/logLevel,在頁面上指定類名和日誌級別,而後在對應節點的ResourceManager日誌中就能夠找到對應的debug日誌。本問題中設置類名爲org.apache.hadoop.yarn.server.resourcemanager.mnode,結果沒有找到有用信息。

四、解決辦法

  在排除問題過程當中發現同集羣上Spark任務AM的attempt ID已經重啓到1600+了,因此到此判斷是Yarn的問題致使,可是什麼問題仍是沒有找到。

  解決辦法:重啓yarn集羣便可。

後記:

  哎,真是一頓操做猛如虎啊,到頭啥緣由仍是沒有定位出來。不過在這個過程當中涉及的思考過程和涉及的參數仍是值得記錄下來的,因此有了這篇博客,對不住了各位看官,願勿惱! 

Ref:

[1]http://www.javashuo.com/article/p-zumzneab-mc.html

[2]http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

[3]https://ci.apache.org/projects/flink/flink-docs-release-1.6/ops/jobmanager_high_availability.html

相關文章
相關標籤/搜索