【yarn】任务日志丢失问题分析
故事背景
今天中午收到了一个报警邮件通知。内容大致为:有一个正在 yarn
上运行的flink
的实时任务挂掉了。
针对上述的现象,我们的开发工程师先打开yarn
的web ui
找到对应的job
的任务页面。查询任务日志。
点击这个log
,找不到任何日志。那么很显然,这个任务的container
已经没了,日志已经找不到了。
引出问题:日志怎么会消失?
探究过程
- 通过上图的
Finished
这一栏可以看到,这个任务在什么时候结束运行的,从上图得知,这个任务是在Wed Nov 16 12:58:09 +0800 2022
挂掉的。 - 记录最下面
Node
栏对应的机器ip
(在上面的图片中我打码了,这个机器是yarn
的一个node
节点,请根据自己的环境来分析) - 在做好上述两点的基础上,先找到这台
Node
节点,然后检查该节点的NodeManager
的日志,目前我用的环境是cdh
,所以我可以在cloudera manager
管理界面上查看到对应的NodeManager
的角色日志,找到Finshed
时间对应的日志,日志如下:
如上所示:
针对标号1的这块儿内容,进入cdh
的给出来的官方文档检查了一下:
这个exitCode=255
似乎看不出来什么原因。
但是通过标志2的那段内容可以看到这个container
找不到用户scb
。带着这段信息去搜索了一下,得到如下链接:https://community.cloudera.com/t5/Support-Questions/Getting-user-not-found-issue-when-starting-spark-job/td-p/278090
在这个链接中:
明确的提到了同类的问题,并且给出了问题发生的可能性。
针对找不到用户的问题的校验方法,验证该用户是否有效:- 登录对应的机器上
- 使用命令
id 用户名
来查询用户名是否ok
针对问题的可能发生的原因:可能是有运维人员操作了sssd
工具,导致当时运行程序的container
容器的那台机器的用户名受到了影响。导致程序运行失败,container
容器启动失败被清理掉了。
后续我们问了一下相关的负责人,得到的反馈是在那个时间点操作了一下sssd
导致了container
找不到用户名
总结
其实诊断信息就写在这里
最后,通过该问题的探究经历,经验+1。如果各位大佬有什么更好的建议,请在评论区里留言。谢谢~