美文网首页Flinkflink
Flink On Yarn如何查看任务日志

Flink On Yarn如何查看任务日志

作者: king_wang | 来源:发表于2021-10-15 10:52 被阅读0次

    无论Flink还是Spark都支持自建集群(standalone cluster)。但是为了保证稳定性和资源隔离等,生产环境里的任务最好借助资源管理框架(如Yarn)运行。任务运行在yarn上,查询日志就可能不是很方便,尤其是任务进程异常退出之后。

    JobHistoryServer

    yarn容器退出之后,默认是不保存日志的。所以需要开启JobHistoryServer,具体方法网上有很多教程。

    查看运行中Flink任务的Log

    运行中的Flink任务可以直接通过flink web ui查看:


    Job Manager Log
    Task Manager Log

    查看已退出Flink任务的Log

    对于已经结束的yarn应用,flink进程已经退出无法提供webui服务。所以需要通过JobHistoryServer查看保留在yarn上的日志。

    1.进入目标应用后,可以通过logs查看日志
    Application
    2.点击logs进入,可以看到job 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,可以发现一些规律:

    • http://node5:19888/jobhistory/logs/:第一部分是jobhistoryserver的地址
    • /node2:8041:第二部分是job manager的当时运行的宿主yarn node
    • /container_1634207619484_0505_01_000001/container_1634207619484_0505_01_000001:第三部分是yarn容器id
    • /root:第四部分是提交任务的用户名
    url component

    所以我们只需要知道taskmanager的容器名node就能找到它的日志了。flink在jobmanager的日志中记录了详细的相关信息,包括所有的taskmanager的容器名node。日志太多可能不好找,这里有一个小技巧:利用appid去搜索日志,比如本文中的例子,可以搜索1634207619484_0505

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

    分析这行日志:taskmanager只有一个,并且它的容器名为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

    总结

    运行中的flink/spark的日志查看非常容易,因为它们本身都提供了web ui服务。但是当任务异常退出之后,flink/spark进程的结束导致无法提供web ui服务。我们利用job history server来保留和展示当时的日志。但是yarn的web只展示了flink job manager/spark driver的日志链接,我们需要自己拼接flink task manager/spark executor日志链接。

    最后我有一个小疑问:文中介绍的URL组成是推测出来的,其中第三部分/container_1634207619484_0505_01_000001/container_1634207619484_0505_01_000001是两个同样的容器名,这是为什么?希望知道的小伙伴能留言解惑一下。

    相关链接:
    Flink On Yarn如何查看任务日志
    Spark On Yarn如何查看任务日志

    相关文章

      网友评论

        本文标题:Flink On Yarn如何查看任务日志

        本文链接:https://www.haomeiwen.com/subject/lwvyoltx.html