gpt4 book ai didi

java - 由于容器启动的 AM 容器异常, headless (headless)环境中的 MapReduce 作业失败 N 次

转载 作者:可可西里 更新时间:2023-11-01 14:15:12 24 4
gpt4 key购买 nike

在 MacOSX 的 headless (headless)环境中运行 map reduce 作业时(例如,当以特定用户身份通过​​ 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 在不传递 -Djava.awt.headless=true 的情况下启动 Java 进程。当这种情况发生在 headless (headless)环境中时,JVM 没有权限在根窗口中显示。这已经出现在许多其他情况下,我已经纠正了每一个。

这不是权限问题(其他地方建议)或缺少目录。

但我不知道如何影响最后一次未经许可访问根窗口的违规尝试。

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

  • hadoop-env.sh 中的 HADOOP_OPTS
  • mapred-env.sh 中的 HADOOP_JOB_HISTORYSERVER_OPTS YARN_OPTS yarn 环境.sh
  • yarn-env.sh 中的 YARN_RESOURCEMANAGER_OPTS(尽管可能重复 YARN_OPTS
  • mapred.{map|reduce}.child.java.opts和 mapred-site.xml 中的 mapred.child.java.opts

我错过了什么?将它添加到我的全局 Java 选项中会更好吗?

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

谢谢。


好的。我认罪。我终于找到了所有要添加的设置……在 mapred-default.xml 中搜索所有“opt”条目配置说明。

他们就在原地……

<property>
<name>mapred.child.java.opts</name>
<value>-Djava.awt.headless=true</value>
</property>
<!-- add headless to default -Xmx1024m -->
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Djava.awt.headless=true -Xmx1024m</value>
</property>
<property>
<name>yarn.app.mapreduce.am.admin-command-opts</name>
<value>-Djava.awt.headless=true</value>
</property>

我也曾尝试通过将参数添加到/etc/profile 中的 _JAVA_OPTIONS 来完成同样的事情。 Java 选择了它,运行 MRAppMaster 时除外!!!

希望这对其他人有帮助。

最佳答案

问题是因为 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: *****

然后作业成功运行。

关于java - 由于容器启动的 AM 容器异常, headless (headless)环境中的 MapReduce 作业失败 N 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20390217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com