ClassNotFoundException当我在Hadoop上运行我自己的代码

ClassNotFoundException当我在Hadoop上运行我自己的代码

问题描述:

我设法运行hadoop示例grep,wordcount ...但是我发现一些困难时刻试图让我自己的代码运行...
这就是我所拥有的完成;ClassNotFoundException当我在Hadoop上运行我自己的代码

我复制了示例jar中的grep代码,并对其进行了自己的更改。我使用命令javac编译它;我可以在文件夹中看到我指定的层次结构“org/apache/hadoop/examples/filename.class”

然后我将它(文件夹)打包到一个jar中;在现在组织/阿帕奇/ ..... 现在,当我运行该命令的“bin/hadoop的罐子folder.jar文件名输入输出” 我不断收到此错误:

Exception in thread "main" java.lang.ClassNotFoundException:.... 

什么想法?或指导?

+0

ç你发布完整的堆栈跟踪和jar文件内容列表(jar -tvf folder.jar) – 2012-03-27 21:32:09

+0

当我执行jar -tvf folder.jar命令时,我得到了这一行 “3503 Tue Mar 27 19:29: 30 GST 2012组织/阿帕奇/ hadoop的/示例/ Grep.class” – 2012-03-27 21:50:22

+0

,这是跟踪: 异常在线程 “主” 抛出java.lang.ClassNotFoundException:用grep \t在java.net.URLClassLoader的$ 1.run(URLClassLoader的的.java:366) \t在java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355) \t在java.security.AccessController.doPrivileged(本机方法) \t在java.net.URLClassLoader.findClass(URLClassLoader的。 java:354) \t在java.lang.ClassLoader.loadClass(ClassLoader.java:423) \t在java.lang.ClassLoader.loadClass(ClassLoader.java:356) \t在java.lang.Class.forName0(本机方法) \t在java.lang.Class.forName(Class.java:264) \t at org.apache.hadoop.util.RunJar.main(RunJar。java:149) – 2012-03-27 21:50:54

检查你正在使用grep的完全限定类名运行以下命令:

hadoop jar folder.jar org.apache.hadoop.examples.Grep ..other_args.. 
+0

非常感谢,它的工作;请问为什么我必须指定整个班级名称?而在hadoop准备好的例子中,我们不需要? – 2012-03-27 22:02:02

+0

可能是hadoop示例jar有一个可执行的jar(清单中指定的主类),它解释第一个参数并委托给相应的类 - 您需要查看源代码以确认 – 2012-03-27 22:03:53

+0

非常好,谢谢再次 – 2012-03-27 22:12:16

使这项工作我不得不添加增加到conf/hadoop-env.sh和我的类路径如下:

  • 出口JAVA_HOME =的/ usr/JAVA /最新
  • 出口HADOOP_HOME =/usr/lib目录/ Hadoop的
  • 出口HADOOP_MAPRED_HOME =/usr/lib目录/ Hadoop的MapReduce的
  • 出口HADOOP_COMMON_HOME = $ HADOOP_HOME
  • 出口HADOOP_HDFS_HOME =/usr/lib中/ Hadoop的HDFS
  • 出口HADOOP_YARN_HOME =/usr/lib中/ Hadoop的纱线
  • 出口HADOOP_CONF_DIR = $ HADOOP_HOME的/ etc/hadoop的
  • 出口YARN_CONF_DIR = $ HADOOP_CONF_DIR
  • 出口HADOOP_CLASSPATH = $ HADOOP_CLASSPATH:$ HADOOP_MAPRED_HOME:$ HADOOP_HDFS_HOME:$ HADOOP_YARN_HOME:$ HADOOP_HOME:$ HADOOP_CONF_DIR:$ YARN_CONF_DIR:$ JSVC_HOME