Storm-YARN:应用程序容器无法启动

时间:2014-11-06 11:48:24

标签: hadoop apache-storm yarn

我正在运行风暴(三叉戟)拓扑,从kafka&读取avro在hbase中写入记录。 拓扑在Localcluster模式下按预期运行,但在使用Stormsubmitter时我遇到了以下问题。

  • 在分布式Hadoop模式下,我在启动YARN应用程序时遇到以下错误[1]。
  • 在Hadoop中(本地模式,仅限1个盒子)纱线生成nimbus服务器和storm-ui。但是没有管理员在拓扑中运行喷口/螺栓。我想原因可能是内存不足(4G运行拓扑+ hbase,hdfs,kafka,zookeeper等......)。

你能帮助我理解这个容器失败的原因吗?应用程序日志中没有错误/信息。

[1] YARN容器无法启动,运行时出现以下错误。 storm-yarn launch /homext/storm-yarn.yml --queue default -appname storm-yarn-demo --stormZip /tmp/storm-0.9.zip

Application application_1415038356032_0304 failed 2 times due to AM Container for appattempt_1415038356032_0304_000002 exited with exitCode: 127 due to: Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException:
org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:505)
at org.apache.hadoop.util.Shell.run(Shell.java:418)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
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)
at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Container exited with a non-zero exit code 127
.Failing this attempt.. Failing the application. 

2 个答案:

答案 0 :(得分:0)

此日志不足以诊断。它说的是容器无法启动。您应该查看容器输出。检查节点上的${yarn.nodemanager.log-dirs},将会有一个应用程序文件夹(application_1415038356032_0304),并且每次尝试都会有一个容器文件夹(... 1415038356032_0304_000002),其中包含此尝试的stderr,stdout和syslog。阅读这些内容,您可能会发现问题。

如果这些不存在,请查看${yarn.nodemanager.local-dirs}您将找到此应用/容器尝试的容器启动脚本(我认为称为container-launch.sh)。在它中将是启动容器的实际命令。尝试从shell提示符运行它,看看你得到了什么。

答案 1 :(得分:0)

如果它在早期阶段失败,则可以在HDFS中找到日志:

/tmp/logs/<user>/logs/

这应该提供足够的信息来诊断问题。

就我而言,我找到了一个日志文件:

/tmp/logs/hdfs/logs/application_1426618997634_0004/vagrant-cdh-node4_8041

有一些错误,如:

/bin/bash: /usr/lib/jvm/java-7-oracle/bin/java: No such file or directory

修复JAVA_HOME环境变量就可以了。