问题描述
当 Flink 作业运行在 Yarn 集群时,往往机器上的物理盘, 一般会保存作业以来的一些配置, keytab, log 当磁盘故障时, 对于 Flink 作业的影响某些场景并不是致命的,不会导致作业立马失败。
对应的日志如下:
org.apache.hadoop.security.KerberosAuthException: Login failure for user: xxxx
失败原因:
Flink 作业在 relogin 时,依赖的 keytab 找不到,导致 relogin 失败, 无法近一步触发 checkpoint.
线上问题修复
修复思路:
只要把对应的 keytab 目录重建即可, 再把相应的 keytab 拷贝过去即可。
- 使用 arthas 找到作业依赖的 keytab 的路径.
[arthas@80073]$ watch org.apache.hadoop.security.UserGroupInformation newLoginContext params[3].getParameters()
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 160 ms, listenerId: 9
method=org.apache.hadoop.security.UserGroupInformation.newLoginContext location=AtExit
ts=2023-01-10 15:37:09; [cost=0.323502ms] result=@LoginParams[
@LoginParam[PRINCIPAL]:@String[xxxx@XIAOMI.HADOOP],
@LoginParam[KEYTAB]:@String[/home/xxxx/hdd1/xxxx/appcache/application_1656060449505_11223/container_e39_1656060449505_11223_01_000001/krb5.keytab],
]
- 根据作业引用到的 keytab 路径,将作业依赖的 keytab 拷贝到对应的路径即可.