flink taskmanager 初始化失败,报TaskManager initialization failed
【问题现象】
报错1:
报错2:
【定位步骤】
-
报错1是因为flink写日志的文件目录权限不够。为什么不够呢?因为该环境是admin部署,而flink的用户是自己创建的一个用户999,不是root用户,访问权限报错
--解决办法:在对应扩容脚本中增加日志目录的权限赋值,赋值为777 -
报错为taskmanager初始化失败,是因为底层需要拿hostname/ip去连接jobmanager,而hostname拿不到,ipv6解析又报错导致初始化失败
分析步骤:
- 对比正常ipv6环境和该环境日志打印对比,发现正常环境会有一个Trying connect的尝试过程,如下截图
而问题环境都没有尝试直接使用hostname或者ipv6去连接了。 - 分析源码ConnectionUtils,查看造成这部分代码流程不同的原因:在ConnectionUtils 只打印了一个Retrieved new target address,而之后就跳出了该文件和方法
猜测与while这里的时间判断有关,导致直接跳出while了,后续没有日志打印,造成了代码流程的不同 - 验证,测试反馈该环境改过时间,而jobmanager的pod没有重启,而taskmanager的pod重启了,与节点时间保持了一致,这两个pod时间没有同步,导致走了不同的流程。查看两个环境中的日志打印时间,的确差了几分钟,在问题环境手动同时重启两个pod,流程变为正常,pod启动正常。
- 思考,分布式环境中,配置和时间需要保持一致,不然会出现很多意想不到的问题。
分类:
问题定位
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构