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也可能报了其他问题,根据日志可以自行分析解决。

喜欢就点赞、收藏一下~

未经允许禁止转载~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇