美文网首页大数据平台技术笔记
1. 记一次Flink的TaskManager运行失败分析

1. 记一次Flink的TaskManager运行失败分析

作者: OkGogogooo | 来源:发表于2022-05-25 16:37 被阅读0次

1. 主要环境说明:

  • Java8
  • Hadoop3.2
  • Flink 1.14.2

2.场景说明

flink集群是通过大数据平台(XSailboat)启动,运行在Yarn上的。
flink集群运行起来以后,提交Job,无法运行成功。


任务运行图

3.排查过程

3.1 查看JobManager的日志

JobManager日志

发现TaskManager运行在XCloud154上,运行失败。

3.2 查看Container的运行日志

日志在XCloud154的产品目录下logs/userlogs/{applicationId}/{containerId}下


image.png

从taskmanager.err和taskmanager.log中寻找出错原因。
在taskmanager.log中发现以下异常消息。


TaskManager运行失败异常
从中可以发现是因为找不到flink-conf.yaml文件。
接着分析launch_container.sh文件里面的内容,发现并没有flink-conf.yaml相关的文件引入信息。正常情况下,应该有以下shell命令。
ln -sf -- "xxxxx" "flink-conf.yaml"

这说明JobManager在启动TaskManager的时候,没有引入flink-conf.yaml。
为了理解其为什么没有引入这个文件,就需要分析flink源码,理解其逻辑,才有可能找到没有引入flink-conf.yaml的原因。

3.3 flink源码分析

笔者目前并没有怎么分析过flink的源码,对flink源码并不了解。但是笔者写过Yarn Application,知道一个Yarn Application Master是如何启动一个容器,运行程序的。在当前情形下Job Mananger就是 Yarn AM,TaskManager就是其运行起来的APP。Yarn AM启动一个APP必然会用到Hadoop的一个类:

org.apache.hadoop.yarn.api.records.ContainerLaunchContext

上GitHub上的flink项目查找这个类。如果GitHub慢可以下载源码,导入到IDE中进行查找。
排除掉测试类,有可能相关的有下面几个:

org.apache.hadoop.yarn.api.records.LocalResource

搜索一下,很快就发现Utils.java中的这段代码


image.png

有过写Yarn App经验的,一眼就能看出来,这是构造容器中APP运行所使用的文件资源(ContainerLaunchContext,容器启动上下文)的代码。
这段代码所属方法是


image.png
一看方法名,就确定没有找错了。
在其中寻找flink-conf.yaml配置加入其中的代码。发现并没有代码直接表明把flink-conf.yaml引入进来,那很可能就是批量添加过程中被添加进来的。

很快这段代码引起了我注意:


image.png
首先它是批量添加,其次shipListString这个变量名中的ship也引起了我的关注。因为大数据平台(XSailboat)
在Yarn中启动JobManager的启动命令中,就有变量是包含"ship"这个单词的。
分析代码,看看此处shipListString是什么?
image.png
看看YarnConfigKeys.ENV_CLIENT_SHIP_FILES到底是个什么内容。
image.png
_CLIENT_SHIP_FILES正是启动JobManager的脚本中包含的参数。
查看JobManager的启动脚本
image.png

所以 decodeYarnLocalResourceDescriptorListFromString(shipListString).forEach()的功能就是把JobMananger中_CLIENT_SHIP_FILES声明的文件资源引入进来,作为TaskMananger启动上下文的一部分。
分析_CLIENT_SHIP_FILES的内容,发现是在构造过程中少了一个";"


image.png
修改自己写的构造_CLIENT_SHIP_FILES的代码,把“;”加上,至此问题解决了。

最后附一张我们大数据平台(XSailboat)中的DataStudio模块中开发开发实时计算管道,运行在Flink集群上的截图。


image.png

正在开发中...

相关文章

网友评论

    本文标题:1. 记一次Flink的TaskManager运行失败分析

    本文链接:https://www.haomeiwen.com/subject/pnweprtx.html