Hadoop mapreduce程序因exitcode 127而失败

时间:2012-12-03 16:03:47

标签: hadoop exit-code

Tyring要运行一些hadoop程序。我看到NameNode,Datanode,Yarn集群URL已启动并正在运行。即127.0.0.1:50070 /dfshealth.jsp,localhost:8088 / cluster / cluster等

但是当我尝试运行我的mapreduce程序时:$ hadoop MySampleProgram hdfs://localhost/user/cyg_server/input/myfile.txt hdfs:// localhost / user / cyg_server / output / op

程序失败并显示日志:

  

INFO mapreduce.Job(Job.java:monitorAndPrintJob(1295)) - 地图0%减少   0%

     

INFO mapreduce.Job(Job.java:monitorAndPrintJob(1308)) - 工作   job_1354496967950_0003因状态失败而失败,原因是:应用程序   由于AM Container for,application_1354496967950_0003失败了1次   appattempt_1354496967950_0003_000001退出,退出时使用exitCode:127,原因如下:   这次尝试失败了。申请失败了。

     

2012-12-03 07:29:50,544 INFO mapreduce.Job   (Job.java:monitorAndPrintJob(1313)) - 计数器:0

当我通过一些日志时,我注意到这一点:nodemanager.DefaultContainerExecutor(DefaultContainerExecutor.java:launchContainer(193)) - 从任务退出代码是:127

我在Windows 7中使用cygwin运行。

非常感谢任何输入。

:::在此处添加更多信息::: 截至目前我可以看到以下hadoop源,而执行[试图设置启动容器]失败...我在这里添加该文件的源URL ....(注意这不是hadoop错误,但我指出但有些事我想念了......) 类别:DefaultContainerExecutor 方法:launchContainer 行:从方法launchContainer的开头到195,它打印代码。

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hadoop/hadoop-yarn-server-nodemanager/0.23.1/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java#193

NODE MANAGER LOG EXTRACT

  

INFO nodemanager.DefaultContainerExecutor   (DefaultContainerExecutor.java:launchContainer(175)) -   launchContainer:[bash,   的/ tmp /纳米本地-... 2936_0003 / container_1354566282936_0003_01_000001 / default_container_executor.sh]

     

WARN nodemanager.DefaultContainerExecutor   (DefaultContainerExecutor.java:launchContainer(193)) - 退出代码   任务是:127

     

INFO nodemanager.ContainerExecutor   (ContainerExecutor.java:logOutput(167)) -

     

WARN launcher.ContainerLaunch(ContainerLaunch.java:call(274)) -   容器以非零退出代码127退出

谢谢Hari

2 个答案:

答案 0 :(得分:3)

硬编码hadoop-env.sh里面的java home路径为我解决了这个问题,如下所示:

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

答案 1 :(得分:1)

当我尝试使用未包含在标准Hadoop发行版中的库(在我的情况下为org.apache.lucene)时,我遇到了这个问题。解决方案是使用"yarn.application.classpath"配置属性将缺少的库添加到yarn类路径:

    String cp = conf.get("yarn.application.classpath");
    String home=System.getenv("HOME");
    cp+=","+home+"/" + ".m2/repository/org/apache/lucene/lucene-core/4.4.0/*";
    cp+=","+home+"/" + ".m2/repository/org/apache/lucene/lucene-analyzers/4.4.0/*";
    cp+=","+home+"/" + ".m2/repository/org/apache/lucene/lucene-analyzers-common/4.4.0/*";
    conf.set("yarn.application.classpath", cp);