Flink任务缺失Jobmanager日志的问题排查
问题不是大问题,不是什么代码级别的高深问题,也没有影响任务运行,纯粹因为人员粗心导致,记录一下排查的过程。
问题描述
一个生产环境的奇怪问题,环境是flink1.15.0 on yarn3.2.2的,研发人员反馈业务正常运行,但是最近变更算法替换新包的时候有业务异常,然后需要排查日志的时候发现没有日志,打开Jobmanager
日志就会一直转圈:
排查过程
页面因为一直转圈,就看了下控制台请求,报错是404,找不到对应的日志文件
检查了一下ApplicationMaster的启动日志,看到在容器启动的时候是有传入相关的log.file参数的,所以基本排除提交命令这块的问题:
echo "Launching container"
exec /bin/bash -c "$JAVA_HOME/bin/java -Xmx3462817376 -Xms3462817376 -XX:MaxMetaspaceSize=268435456 -Dlog.file="/data3/yarn/logs/userlogs/application_1667318330721_0144/container_e37_1667318330721_0144_03_000001/jobmanager.log" -Dlog4j.configuration=file:log4j.properties -Dlog4j.configurationFile=file:log4j.properties org.apache.flink.yarn.entrypoint.YarnApplicationClusterEntryPoint -D jobmanager.memory.off-heap.size=134217728b -D jobmanager.memory.jvm-overhead.min=429496736b -D jobmanager.memory.jvm-metaspace.size=268435456b -D jobmanager.memory.heap.size=3462817376b -D jobmanager.memory.jvm-overhead.max=429496736b 1> /data3/yarn/logs/userlogs/application_1667318330721_0144/container_e37_1667318330721_0144_03_000001/jobmanager.out 2> /data3/yarn/logs/userlogs/application_1667318330721_0144/container_e37_1667318330721_0144_03_000001/jobmanager.err"
因为这个环境早前有把flink从1.13.2升级到1.15.0的情况,又验证了一下版本是不是有问题,使用1.13.2提交一个example任务:
/usr/local/flink/bin/flink run-application -t yarn-application -Dtaskmanager.numberOfTaskSlots=1 -Djobmanager.memory.process.size=4096m -Dtaskmanager.memory.process.size=6144m -Dyarn.provided.lib.dirs="viewfs://nsX/ns7/user/flink_lib" -Dyarn.application.name="Flink-Test" -Dyarn.flink-dist-jar="viewfs://nsX/ns7/user/flink_lib/flink-dist-1.13.2.jar" SocketWindowWordCount.jar --hostname localhost --port 22
你还别说真就打出日志了:
对比了一下AM的的web日志页,发现1.15启动的缺少jobmanager.log文件
依次检查了log4j的相关配置,新旧版本也没有区别,又看了一眼提交命令,提交命令里有一个指定依赖目录的参数yarn.provided.lib.dirs
,瞅一眼看看是不是有问题
好嘛,看着1.13.2的依赖目录和1.15.0比差了几个log4j的包,把相应的包补齐到1.15.0的目录里,再提交任务,一切正常: