1
bash-3.2$ 回声 $JAVA_HOME
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
bash-3.2$ bin/hadoop dfs -copyFromLocal conf /user/yokkom/input2
bash-3.2$ bin/hadoop jar hadoop-*-examples.jar grep input2 output 'dfs[az.]+'
2017 年 9 月 4 日 10:09:32 信息 mapred.FileInputFormat:要处理的总输入路径:10
2017 年 9 月 4 日 10:09:33 信息 mapred.JobClient:正在运行的作业:job_200904171309_0001
java.io.IOException:作业失败!
        在 org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1232)
        在 org.apache.hadoop.examples.Grep.run(Grep.java:69)
        在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        在 org.apache.hadoop.examples.Grep.main(Grep.java:93)
        在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在 java.lang.reflect.Method.invoke(Method.java:597)
        在 org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
        在 org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:141)
        在 org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:61)
        在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        在 java.lang.reflect.Method.invoke(Method.java:597)
        在 org.apache.hadoop.util.RunJar.main(RunJar.java:165)
        在 org.apache.hadoop.mapred.JobShell.run(JobShell.java:54)
        在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
        在 org.apache.hadoop.mapred.JobShell.main(JobShell.java:68)

有谁知道为什么会这样?同样的工作在 linux 机器上运行得很好。并且,在“作业失败”发生后,整个 Hadoop 集群停止响应。

我的 MacOS 版本是 10.5.6。

编辑hadoop-0.20.1 的相同结果

4

2 回答 2

0

我用谷歌搜索它,同样的错误(在完全相同的行)之前发生过。在这里这里阅读它。

第二个链接建议以下内容:

  • 删除conf/log4j.properties查看详细报告
  • 尝试增加堆内存(使用 -Xms 和 -Xmx 开关)
于 2009-05-18T20:25:20.523 回答
0

是的 grep 会占用内存,尤其是在大型数据集上。你的输入有多大?顺便说一句,还有烫发记忆。

http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

有一些有趣的开关可以在 OutOfMemory 上执行自定义行为,但是我怀疑 jobRunner 只是在到达 VM 之前捕获所有内容。您可能需要另一种方式来调试它。

于 2009-05-25T17:14:30.857 回答