mapreduce作业由于容器启动的am容器异常而失败n次

g2ieeal7  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(455)

在macosx的无头环境中运行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作业将运行到结束,而dock中会弹出一个标记为“mrappmaster”的java图标。
我已经将范围缩小到resourcemanager启动java进程而不传递 -Djava.awt.headless=true . 在无头环境中发生这种情况时,jvm没有在根窗口中显示的权限。这在其他一些情况下也出现过,我已经纠正了每一种情况。
这不是权限(别处建议的内容)或缺少目录的问题。
但我不知道如何影响最后一次未经允许访问根窗口的违规尝试。
我添加了 -Djava.awt.headless=true 以下选项:
hadoop-env.sh中的hadoop选项
hadoop\作业\历史服务器\在mapred-env.sh中选择yarn\在yarn-env.sh中选择
yarn\u resourcemanager\u在yarn-env.sh中选择(尽管这可能与yarn\u选项重复)
mapred.xml中的{map | reduce}.child.java.opts和mapred.child.java.opts
我错过了什么?我最好把这个添加到我的java选项中?
仅供参考,这只是在mac os x 10.8.5上的一个伪集群设置,运行从apache下载的hadoop 2.2.0和Java1.6.0キ65-b14。我没有使用自制或任何其他发行版。我正在用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中的\ujava\u选项来完成相同的任务。java拿起它,除了在运行mrappmaster时!!!
希望这能帮助其他人。

carvr3hs

carvr3hs1#

这个问题是因为yarn对java可执行文件使用的路径与os中的不同。
检查java的硬编码路径是/bin/java,但是如果您没有/bin/java作为java可执行文件,则yarn作业将失败。像在osx中一样,java 1.7在/usr/bin/java中运行,如下所示:

$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:*****

之后,作业成功运行。

pgpifvop

pgpifvop2#

如果sudo ln-s/usr/bin/java/bin/java操作不允许

System Integrity Protection (SIP,1 sometimes referred to as rootless2[3]) is a security feature of OS X El Capitan, the operating system by Apple Inc.

这是OSX10.11的一个新特性,如果您不想禁用它,您必须编辑hadoop-env.sh和yarn-env.sh,将javau home和java设置为精确路径。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

JAVA=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java

塞纳克斯

相关问题