Container exited with a non-zero exit code 1

最近遇到运行yarn pi的时候遇到如下问题。

1904_1.jpeg

很明显是container出错了,但是错误没有提示的很清楚。然后去看nodemanager日志也是如此。这时候笔者第一个想到要去看container的执行日志。container具体的日志目录位置是通过YARN的配置文件(如yarn-site.xml)中的yarn.nodemanager.log-dirs属性定义的,默认为$HADOOP_HOME/logs/userlogs。去对应的nodemanager的userlogs下发现没有任何日志,查看nodemanager日志发现如果任务失败了,默认会删除container日志。

1904_2.jpeg

笔者觉得可以改一下源码,让他先不删日志。

DefaultContainerExecutor.java

  @Override
  public void deleteAsUser(DeletionAsUserContext ctx)
      throws IOException, InterruptedException {
    Path subDir = ctx.getSubDir();
    List<Path> baseDirs = ctx.getBasedirs();

    if (baseDirs == null || baseDirs.size() == 0) {
      LOG.info("Deleting absolute path : " + subDir);
      //if (!lfs.delete(subDir, true)) {
        //Maybe retry
        LOG.warn("delete returned false for path: [" + subDir + "]");
      //}
      return;
    }
    for (Path baseDir : baseDirs) {
      Path del = subDir == null ? baseDir : new Path(baseDir, subDir);
      LOG.info("Deleting path : " + del);
      //try {
        //if (!lfs.delete(del, true)) {
          //LOG.warn("delete returned false for path: [" + del + "]");
        //}
      //} catch (FileNotFoundException e) {
        //continue;
      //}
    }
  }

调整完了,重新打包一下当前项目,替换一下share/hadoop/yarn/hadoop-yarn-server-nodemanager-3.1.1.jar,重新执行就可以看到container执行日志了。

1904_3.jpeg

发现是job.xml加载有问题。后续经过分析解决了问题。当然container也可能报了其他问题,根据日志可以自行分析解决。

喜欢就点赞、收藏一下~

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zfpigpig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值