flink taskmanager 初始化失败,报TaskManager initialization failed

【问题现象】
报错1:

报错2:

【定位步骤】

  1. 报错1是因为flink写日志的文件目录权限不够。为什么不够呢?因为该环境是admin部署,而flink的用户是自己创建的一个用户999,不是root用户,访问权限报错
    --解决办法:在对应扩容脚本中增加日志目录的权限赋值,赋值为777

  2. 报错为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启动正常。
  • 思考,分布式环境中,配置和时间需要保持一致,不然会出现很多意想不到的问题。
posted @ 2023-04-20 14:58  xiaoyu_jane  阅读(349)  评论(0编辑  收藏  举报