hadoop之Oozie/ yarn : resource changed on src filesystem

grandyang 阅读:27 2024-02-23 17:27:14 评论:0

我有一个 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. 

主线是:

Resource file:/opt/tst/tst.jar changed on src filesystem (expected 1516886392000, was 151689149600).



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

我的问题是:我如何告诉 yarn 停止提示并使用新的?

几点注意事项:
  • Hortonworks 2.6,基于 hadoop 2.7,
  • jar 仅由我放在本地 FS 上,不在 hdfs 中,
  • 与 spark 无关(我的问题在 google 上出现了很多与 spark 相关的问题),
  • yarn.sharedcache.enabledfalse (默认)所以 yarn scmadmin -runCleanerTask在这里不相关,
  • 我可以通过重用旧 jar 来解决我当前的问题,并且我可以确保所有 DN 具有相同的 TS,但我想知道我将如何能够使用新版本(注意 oozie 指向的 jar 是符号链接(symbolic link)发布新版本时不必更新 oozie),
  • 我宁愿将文件保留在本地 FS 上,而不必将其放在 hdfs 上,
  • jar 名称非常具体,它不会与任何其他 jar 冲突,
  • 工作流以用户 yarn 身份运行我在 hdfs 上的 yarn 用户目录中找不到我的 jar 的任何副本(也没有在 oozie 目录下),
  • 我可以在 yarn local dir/filecache 下找到 jar 的副本,但它们的 md5 与我的任何(当前)版本都不匹配。
  • 请您参考如下方法:

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

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

    一般步骤如下:

    1、获取你使用的yarn的源码。您可以从 Hadoop 官方网站下载它。
    2、搜索错误日志如changed on file system在 Hadoop 源代码中。
    3、注释掉
    4、Rebuild Yarn相关jar
    5、把它放到你的工作环境中。

    您可以引用How to fix resource changed on src filesystem issue更多细节。


    标签:hadoop
    声明

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    关注我们

    一个IT知识分享的公众号