我有一个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略有不同。)
我的问题是:如何告诉纱线停止发牢骚并使用新纱线?
一些注意事项:
yarn.sharedcache.enabled
为false
(默认值),因此yarn scmadmin -runCleanerTask
与此无关,yarn
运行,我在hdfs的yarn用户目录中找不到我的jar的任何副本(在oozie目录下也找不到),答案 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 文件夹解决了我的问题。