Flink On Yarn如何查看任務(wù)日志

無論Flink還是Spark都支持自建集群(standalone cluster)。但是為了保證穩(wěn)定性和資源隔離等,生產(chǎn)環(huán)境里的任務(wù)最好借助資源管理框架(如Yarn)運(yùn)行。任務(wù)運(yùn)行在yarn上,查詢?nèi)罩揪涂赡懿皇呛芊奖?,尤其是任?wù)進(jìn)程異常退出之后。

JobHistoryServer

yarn容器退出之后,默認(rèn)是不保存日志的。所以需要開啟JobHistoryServer,具體方法網(wǎng)上有很多教程。

查看運(yùn)行中Flink任務(wù)的Log

運(yùn)行中的Flink任務(wù)可以直接通過flink web ui查看:


Job Manager Log

Task Manager Log

查看已退出Flink任務(wù)的Log

對于已經(jīng)結(jié)束的yarn應(yīng)用,flink進(jìn)程已經(jīng)退出無法提供webui服務(wù)。所以需要通過JobHistoryServer查看保留在yarn上的日志。

1.進(jìn)入目標(biāo)應(yīng)用后,可以通過logs查看日志
Application
2.點(diǎn)擊logs進(jìn)入,可以看到j(luò)ob manager的日志
job manager full log
3.task manager日志在哪里?

好像沒有task manager的日志啊,怎么辦?我們可以先研究一下job manager的日志url:http://node5:19888/jobhistory/logs//node2:8041/container_1634207619484_0505_01_000001/container_1634207619484_0505_01_000001/root,可以發(fā)現(xiàn)一些規(guī)律:

  • http://node5:19888/jobhistory/logs/:第一部分是jobhistoryserver的地址
  • /node2:8041:第二部分是job manager的當(dāng)時(shí)運(yùn)行的宿主yarn node
  • /container_1634207619484_0505_01_000001/container_1634207619484_0505_01_000001:第三部分是yarn容器id
  • /root:第四部分是提交任務(wù)的用戶名
url component

所以我們只需要知道taskmanager的容器名node就能找到它的日志了。flink在jobmanager的日志中記錄了詳細(xì)的相關(guān)信息,包括所有的taskmanager的容器名node。日志太多可能不好找,這里有一個(gè)小技巧:利用appid去搜索日志,比如本文中的例子,可以搜索1634207619484_0505

task manager container

Registering TaskManager with ResourceID container_1634207619484_0505_01_000002 (akka.tcp://flink@node1:37798/user/taskmanager_0)

分析這行日志:taskmanager只有一個(gè),并且它的容器名為container_1634207619484_0505_01_000002,node為node1(注意:后面拼接url用的端口號是8041不是37798)
最終我們得的taskmanager日志的url是:http://node5:19888/jobhistory/logs/node1:8041/container_1634207619484_0505_01_000002/container_1634207619484_0505_01_000002/root

task manager log

總結(jié)

運(yùn)行中的flink/spark的日志查看非常容易,因?yàn)樗鼈儽旧矶继峁┝藈eb ui服務(wù)。但是當(dāng)任務(wù)異常退出之后,flink/spark進(jìn)程的結(jié)束導(dǎo)致無法提供web ui服務(wù)。我們利用job history server來保留和展示當(dāng)時(shí)的日志。但是yarn的web只展示了flink job manager/spark driver的日志鏈接,我們需要自己拼接flink task manager/spark executor日志鏈接。

最后我有一個(gè)小疑問:文中介紹的URL組成是推測出來的,其中第三部分/container_1634207619484_0505_01_000001/container_1634207619484_0505_01_000001是兩個(gè)同樣的容器名,這是為什么?希望知道的小伙伴能留言解惑一下。

相關(guān)鏈接:
Flink On Yarn如何查看任務(wù)日志
Spark On Yarn如何查看任務(wù)日志

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容