为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复 src 文件系统问题上的资源更改

如何修复 src 文件系统问题上的资源更改

MM们 2023-10-12 17:10:42
我尝试Hive在 MR 执行中使用SQL,但它中途失败,错误如下:Application application_1570514228864_0001 failed 2 times due to AM Container for appattempt_1570514228864_0001_000002 exited with exitCode: -1000 Failing this attempt.Diagnostics: [2019-10-08 13:57:49.272]Failed to download resource { { s3a://tpcds/tmp/hadoop-yarn/staging/root/.staging/job_1570514228864_0001/libjars, 1570514262820, FILE, null },pending,[(container_1570514228864_0001_02_000001)],1132444167207544,DOWNLOADING} java.io.IOException: Resource s3a://tpcds/tmp/hadoop-yarn/staging/root/.staging/job_1570514228864_0001/libjars changed on src filesystem (expected 1570514262820, was 1570514269265从我的角度来看,错误日志中的关键消息是libjars changed on src filesystem (expected 1570514262820, was 1570514269265。SO 有几个关于此问题的线程,但尚未得到答复,例如thread1和thread2。我从apache jira和redhat bugzilla中发现了一些有价值的东西。NTP我通过所有相关节点同步时钟。但同样的问题仍然存在。欢迎任何评论,谢谢。
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

我仍然不知道为什么资源文件的时间戳不一致,并且没有办法通过配置方式修复它,AFAIK。


但是,我设法找到了解决方法来跳过该问题。让我在这里为可能遇到同样问题的人总结一下。


通过检查错误日志并在源代码中搜索Hadoop,我们可以在hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/FSDownload.java.


只需删除异常抛出语句,


  private void verifyAndCopy(Path destination)

      throws IOException, YarnException {

    final Path sCopy;

    try {

      sCopy = resource.getResource().toPath();

    } catch (URISyntaxException e) {

      throw new IOException("Invalid resource", e);

    }

    FileSystem sourceFs = sCopy.getFileSystem(conf);

    FileStatus sStat = sourceFs.getFileStatus(sCopy);

    if (sStat.getModificationTime() != resource.getTimestamp()) {

            /**

      throw new IOException("Resource " + sCopy +

          " changed on src filesystem (expected " + resource.getTimestamp() +

          ", was " + sStat.getModificationTime());

          **/

            LOG.debug("[Gearon][Info] The timestamp is not consistent among resource files.\n" +

                            "Stop throwing exception . It doesn't affect other modules. ");

    }

    if (resource.getVisibility() == LocalResourceVisibility.PUBLIC) {

      if (!isPublic(sourceFs, sCopy, sStat, statCache)) {

        throw new IOException("Resource " + sCopy +

            " is not publicly accessible and as such cannot be part of the" +

            " public cache.");

      }

    }


    downloadAndUnpack(sCopy, destination);

  }

构建hadoop-yarn-project并复制“hadoop-yarn-common-xxxjar to$HADOOP_HOME/share/hadoop/yarn”。


将此线程留在这里,并感谢您对如何在不更改hadoop源代码的情况下修复它的任何进一步解释。


查看完整回答
反对 回复 2023-10-12
?
慕慕森

TA贡献1856条经验 获得超17个赞

我必须做同样的事情,这应该是可配置的,即使很小的延迟也会导致执行失败,如果将hadoop文件系统更改为使用s3并运行MR程序,则可能会发生这种情况,注意*请确保,您使用的是相同的jdk version 来生成 jar,如 apache hadoop 文档中所述,适用于您的 hadoop 版本,否则您可能会遇到错误。



查看完整回答
反对 回复 2023-10-12
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

实际上,您只需手动将日期设置回之前的值即可解决此问题。例如,使用带有或选项的touch命令:-t STAMP-d DATE

sudo touch -d '07 Apr 2022 11:12:30.000 +0000' '<path_to_file>'


查看完整回答
反对 回复 2023-10-12
  • 3 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信