我在笔记本电脑上设置了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.
Run Code Online (Sandbox Code Playgroud)
书中说我们应该通过编写来设置Hadoop Classpath
rohit@renaissance1:~/hadoop/ch2$ export HADOOP_CLASSPATH=build/classes
Run Code Online (Sandbox Code Playgroud)
主类在我正在执行的MaxTemperature.java文件中定义.我们如何设置Hadoop Classpath?我们是否必须为所有程序执行或仅执行一次?我应该把输入文件夹放在哪里.我的代码在/ home/rohit/hadoop/ch2,我的Hadoop安装在/ home/hadoop.
你应该将应用程序打包成一个JAR文件,这是更容易,更不容易出错比类路径文件夹摆弄.
在您的情况下,您还必须编译.java文件.你说这是MaxTemparature.java,但还必须有一个MaxTemperature.class才能运行它.
小智 6
这是3个步骤:
1:
javac -verbose -classpath C:\\hadoop\\hadoop-0.19.2-core.jar MaxTemperature*.java -d build/classes
Run Code Online (Sandbox Code Playgroud)
2:
put *.class in build/classes
Run Code Online (Sandbox Code Playgroud)
3:
export HADOOP_CLASSPATH=${HADOOP_HOME}/path/to/build/classes
Run Code Online (Sandbox Code Playgroud)
(你必须创建build/classes目录)
最好的问候沃尔德
小智 6
首先按照walid的说法编译Java文件:
javac -classpath path-to-hadoop-0.19.2-core.jar .java-files -d folder-to-contain-classes
Run Code Online (Sandbox Code Playgroud)使用以下命令创建应用程序类的jar文件:
jar cf filename.jar *.class
Run Code Online (Sandbox Code Playgroud)
无论是将类导出到jar文件还是使用特定文件夹存储类文件,都应定义HADOOP_CLASSPATH指向包含类文件的特定类文件或文件夹.因此,在运行Hadoop命令时,它应该知道为主类指定的位置.
组 HADOOP_CLASSPATH
export HADOOP_CLASSPATH=path-to-filename.jar
Run Code Online (Sandbox Code Playgroud)
要么
export HADOOP_CLASSPATH=path-to-folder-containing-classes
Run Code Online (Sandbox Code Playgroud)使用Hadoop命令运行:
hadoop main-class args
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
25284 次 |
| 最近记录: |