由于容器启动时的AM容器异常,无头环境中的MapReduce作业失败了N次

 橙色kop 发布于 2023-02-12 18:38

在MacOSX中运行地图减少无头环境中的作业时(例如,当作为特定用户ssh时运行作业时),我得到以下异常或类似的东西......

2013-12-04 15:08:28,513 WARN org.apache.hadoop.yarn.server.resourcemanager.RMAuditLogger: USER=hadoop   OPERATION=Application Finished - Failed TARGET=RMAppManager     RESULT=FAILURE  DESCRIPTION=App failed with state: FAILED       PERMISSIONS=Application application_1386194876944_0001 failed 2 times due to AM Container for appattempt_1386194876944_0001_000002 exited with  exitCode: 1 due to: Exception from container-launch:
org.apache.hadoop.util.Shell$ExitCodeException:
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:464)
        at org.apache.hadoop.util.Shell.run(Shell.java:379)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:589)
        at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:195)
        at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:283)

相反,如果我以该用户身份登录,则不会发生错误并且MR作业将运行结束,而标记为"MRAppMaster"的Java图标会在Dock中弹出.

我把它缩小到ResourceManager启动Java进程而不传递-Djava.awt.headless=true.在无头环境中发生这种情况时,JVM无权在根窗口中显示.这已经出现在其他一些情况下,我已经纠正了每一个.

这不是权限问题(在别处建议的东西)或缺少目录.

但是我不知道如何影响最后一次未经许可访问根窗口的违规行为.

我已将-Djava.awt.headless=true选项添加到以下内容中:

hadoop-env.sh中的HADOOP_OPTS

在yarn-env.sh中的HADOOP_JOB_HISTORYSERVER_OPTS在yarn-env.sh中的YARN_OPTS

yarn-env.sh中的YARN_RESOURCEMANAGER_OPTS(虽然这可能与YARN_OPTS重复)

mapred.{map | reduce} .child.java.opts和mapred.child.java.opts在mapred-site.xml中

我错过了什么?我最好在全球范围内将它添加到我的Java选项中吗?

仅供参考,这仅仅是Mac OS X 10.8.5上的伪群集设置,运行从Apache 1.6.0_65-b14下载的Hadoop 2.2.0.我没有使用Homebrew或任何其他发行版.我正在使用WordCount示例测试伪群集.

谢谢.


好.Mea culpa.我终于找到了要添加的所有设置...在mapred-default.xml配置说明中搜索所有"opt"条目.

他们在这里就地......


    mapred.child.java.opts
    -Djava.awt.headless=true



    yarn.app.mapreduce.am.command-opts
    -Djava.awt.headless=true -Xmx1024m


    yarn.app.mapreduce.am.admin-command-opts
    -Djava.awt.headless=true

我还试图通过在/ etc/profile中添加_JAVA_OPTIONS参数来完成同样的事情.除非运行MRAppMaster,否则 Java 会把它拿起来!

希望这有助于其他人.

1 个回答
  • 导致该问题的原因是YARN使用的JAVA可执行文件的路径与您在操作系统中的路径不同.

    检查java的硬编码路径是/ bin/java但是如果没有/ bin/java作为Java可执行文件,则YARN作业将失败.就像在OSX中一样,我在/ usr/bin/java上运行Java 1.7,如下所示:

    $java -version  
     java  version "1.7.0_45" 
     Java(TM) SE Runtime Environment (build 1.7.0_45-b18) 
     Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
    

    为了在OSX中解决这个问题,我创建了一个从/ bin/java到/ usr/bin/java的链接,如下所示:

    $ sudo ln -s /usr/bin/java /bin/java                                                                        
      Password: *****
    

    之后,工作成功运行.

    2023-02-12 18:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有