Oozie / yarn:src文件系统上的资源已更改

时间:2018-01-29 14:04:20

标签: hadoop yarn oozie

我有一个Oozie工作流程,其中一步是java步骤,运行存储在本地文件系统上的jar(jar存在于所有节点上)。

最初,jar是通过RPM安装的,因此它们都具有相同的时间戳。

在进行实验时,我在这个jar上手动复制了一个新版本,现在我收到消息:

org.apache.oozie.action.ActionExecutorException: JA009: org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_1516602562532_15451 to YARN : Application application_1516602562532_15451 failed 2 times due to AM Container for appattempt_1516602562532_15451_000002 exited with  exitCode: -1000
For more detailed output, check the application tracking page: http://ip-10-0-0-239.eu-west-1.compute.internal:8088/cluster/app/application_1516602562532_15451 Then click on links to logs of each attempt.
Diagnostics: java.io.IOException: Resource file:/opt/tst/tst.jar changed on src filesystem (expected 1516886392000, was 1516891496000
Failing this attempt. Failing the application.

主线是:

  

资源文件:/ temp / tst / tst.jar在src文件系统上更改(预计1516886392000,为151689149600)。

2个数字是时间戳,expected一个确实是旧jar的TS,在所有服务器上都相同,was TS是其中一个datanode上新jar的时间戳(因为它们在循环中被scp编辑,所以TS略有不同。)

我的问题是:如何告诉纱线停止发牢骚并使用新纱线?

一些注意事项:

  • Hortonworks 2.6,基于hadoop 2.7,
  • jar只能由我放在本地FS上,而不是放在hdfs中,
  • 与spark没有任何关系(我的问题在关于spark的谷歌上出现了很多),
  • yarn.sharedcache.enabledfalse(默认值),因此yarn scmadmin -runCleanerTask与此无关,
  • 我可以通过重复使用旧jar来修复当前的问题,我可以确保所有DN都具有相同的TS,但我想知道我将如何能够使用新版本(注意oozie指向的jar)是一个符号链接,无需在发布新版本时更新oozie),
  • 我宁愿将文件保存在本地FS上,而不是将其放在hdfs上,
  • jar名称非常具体,它与任何其他jar都没有冲突,
  • 工作流以用户yarn运行,我在hdfs的yarn用户目录中找不到我的jar的任何副本(在oozie目录下也找不到),
  • 我可以在yarn local dir / filecache下找到jar的副本,但是他们的md5与我的(当前)版本都不匹配。

2 个答案:

答案 0 :(得分:0)

这是我的两分钱,您可以自己构建yarn相关的jar,并将其添加到当前的工作环境中。

跳过这种“烦人”的条件检查可能是一种解决方法。

一般步骤如下:

1,获取所用纱线的源代码。您可以从Hadoop官方网站下载它。 2,在Hadoop源代码中搜索错误日志,例如changed on file system。 3,注释掉 4,重建纱线相关的罐子 5,将其放在您的工作环境中。

有关更多详细信息,请参见How to fix resource changed on src filesystem issue

答案 1 :(得分:0)

在输出文件夹中,我遇到了相同的错误。 (在Oozie工作流程中运行Pig脚本时,( src文件系统上的资源路径/到/输出/文件夹已更改(预期1583243472154,为1583243577395))。

删除 .staging 文件夹解决了我的问题。