运行hadoop示例作业会导致ClassNotFoundException

运行hadoop示例作业会导致ClassNotFoundException,hadoop,Hadoop,我正在hadoop-examples-1.0.3.jar文件中运行一个打包的示例:指定PiEstimator,如下所示: hadoop jar hadoop-examples-1.0.3.jar pi 5 10 但这是失败的,ClassNotFoundException: Number of Maps = 5 Samples per Map = 10 Wrote input for Map #0 Wrote input for Map #1 Wrote input for Map #2 Wr

我正在hadoop-examples-1.0.3.jar文件中运行一个打包的示例:指定PiEstimator,如下所示:

hadoop jar hadoop-examples-1.0.3.jar pi 5 10
但这是失败的,ClassNotFoundException:

Number of Maps  = 5
Samples per Map = 10
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Starting Job
13/06/14 19:42:07 INFO mapred.JobClient: Default number of map tasks: 5
13/06/14 19:42:07 INFO mapred.JobClient: Default number of reduce tasks: 1
13/06/14 19:42:07 INFO security.ShellBasedUnixGroupsMapping: add hadoop to shell userGroupsCache
13/06/14 19:42:07 INFO mapred.JobClient: Setting group to hadoop
13/06/14 19:42:07 INFO mapred.FileInputFormat: Total input paths to process : 5
13/06/14 19:42:08 INFO mapred.JobClient: Running job: job_201306141855_0004
13/06/14 19:42:09 INFO mapred.JobClient:  map 0% reduce 0%
13/06/14 19:42:17 INFO mapred.JobClient: Task Id : attempt_201306141855_0004_m_000006_0, Status : FAILED
java.lang.Throwable: Child Error
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)

attempt_201306141855_0004_m_000006_0: Exception in thread "main" java.lang.NoClassDefFoundError: 
attempt_201306141855_0004_m_000006_0: Caused by: java.lang.ClassNotFoundException: 
attempt_201306141855_0004_m_000006_0:   at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
attempt_201306141855_0004_m_000006_0:   at java.security.AccessController.doPrivileged(Native Method)
attempt_201306141855_0004_m_000006_0:   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
attempt_201306141855_0004_m_000006_0:   at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
attempt_201306141855_0004_m_000006_0:   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
attempt_201306141855_0004_m_000006_0:   at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
attempt_201306141855_0004_m_000006_0: Could not find the main class: .  Program will exit.
13/06/14 19:42:23 INFO mapred.JobClient: Task Id : attempt_201306141855_0004_r_000002_0, Status : FAILED
java.lang.Throwable: Child Error
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)
现在我查看了job.xml文件,找到了生成的mapred.jar,并从hdfs下载了它:

从JobTracker用户界面:

mapred.jar  hdfs://10.172.86.250:9000/mnt/var/lib/hadoop/tmp/mapred/staging/hadoop/.staging/job_201306141855_0001/job.jar
将其下载到本地并查看:

hadoop dfs -get hdfs://10.172.86.250:9000/mnt/var/lib/hadoop/tmp/mapred/staging/hadoop/.staging/job_201306141855_0001/job.jar .
现在PiEstimator类就在这里:

jar -tvf job.jar | grep Pi

  2711 Fri May 17 00:14:04 UTC 2013 org/apache/hadoop/examples/MultiFileWordCount.class
  1504 Fri May 17 00:14:04 UTC 2013 org/apache/hadoop/examples/PiEstimator$HaltonSequence.class
  3101 Fri May 17 00:14:04 UTC 2013 org/apache/hadoop/examples/PiEstimator$PiMapper.class
  3883 Fri May 17 00:14:04 UTC 2013 org/apache/hadoop/examples/PiEstimator$PiReducer.class
  7140 Fri May 17 00:14:04 UTC 2013 org/apache/hadoop/examples/PiEstimator.class

所以。。谢谢你的提示/帮助。顺便说一句,我已经在几十个集群中运行了数百个m/r作业,所以这不是一个简单的问题。但是,我以前从未遇到过这种特定的故障模式。

命令行变得混乱(-Xmx选项)。它

从错误信息
中找不到主类:。程序将退出。
,JVM似乎无法启动,因为主类是一个空字符串(这里我认为它应该是
org.apache.hadoop.mapred.Child
)。你能试试别的工作吗?