如何运行Hadoop程序?

时间:2010-09-26 20:28:21

标签: hadoop

我在笔记本电脑上设置了Hadoop,并成功运行了安装指南中给出的示例程序。但是,我无法运行程序。

rohit@renaissance1:~/hadoop/ch2$ hadoop MaxTemperature input/ncdc/sample.txt output
Exception in thread "main" java.lang.NoClassDefFoundError: MaxTemperature
Caused by: java.lang.ClassNotFoundException: MaxTemperature
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: MaxTemperature.  Program will exit.

本书说我们应该通过编写

来设置Hadoop Classpath
rohit@renaissance1:~/hadoop/ch2$ export HADOOP_CLASSPATH=build/classes

主类在我正在执行的MaxTemperature.java文件中定义。我们如何设置Hadoop Classpath?我们是否必须为所有程序执行或仅执行一次?我应该把输入文件夹放在哪里。我的代码在/ home / rohit / hadoop / ch2,我的Hadoop安装在/ home / hadoop。

6 个答案:

答案 0 :(得分:8)

您应该将应用程序打包到一个JAR文件中,这比使用类路径文件夹更容易,更容易出错。

在您的情况下,您还必须编译.java文件。你说它是MaxTemparature.java,但是在运行它之前还必须有一个MaxTemperature.class。

答案 1 :(得分:6)

以下是3个步骤的答案:

1:

javac -verbose -classpath C:\\hadoop\\hadoop-0.19.2-core.jar MaxTemperature*.java -d build/classes

2:

put *.class in  build/classes

3:

export HADOOP_CLASSPATH=${HADOOP_HOME}/path/to/build/classes

(你必须创建build / classes目录)

最诚挚的问候 瓦利德

答案 2 :(得分:6)

通过Hadoop Book(O'Reilly)时我也发现了这个问题。我通过在配置目录中的hadoop-env.sh文件中设置HADOOP_CLASSPATH变量来修复它。

答案 3 :(得分:6)

  1. 首先按照 walid

    的说法编译Java文件
    javac -classpath path-to-hadoop-0.19.2-core.jar .java-files -d folder-to-contain-classes
    
  2. 使用以下命令创建应用程序类的jar文件:

    jar cf filename.jar *.class
    

    无论是将类导出到jar文件还是使用特定文件夹存储类文件,都应该定义HADOOP_CLASSPATH指向包含类文件的特定类文件或文件夹。因此,在运行Hadoop命令时,它应该知道为主类指定的位置。

  3. 设置HADOOP_CLASSPATH

    export HADOOP_CLASSPATH=path-to-filename.jar
    

    export HADOOP_CLASSPATH=path-to-folder-containing-classes
    
  4. 使用Hadoop命令运行:

    hadoop main-class args
    

答案 4 :(得分:2)

您不一定需要一个jar文件,但是您是否将MaxTemperature放在一个包中?

如果是,请说明MaxTemperature.class文件位于yourdir/bin/yourpackage/,您需要做的就是:

export HADOOP_CLASSPATH=yourdir/bin
hadoop yourpackage.MaxTemperature

答案 5 :(得分:1)

将您的课程设为jar文件后:

hadoop jar MaxTemperature.jar MaxTemperature

基本上:

hadoop jar jarfile main [args]