简体   繁体   English

如何在hadoop 0.23.0 MR2上运行和编译Java程序

[英]How to run and compile java program on hadoop 0.23.0 MR2

I created a .java file to run on cloudera hadoop. 我创建了一个.java文件以在cloudera hadoop上运行。 To compile it, 要编译它,

   javac -classpath $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client- core-3.0.0-SNAPSHOT.jar -d multifetch_classes MultiFetch.java 

Errors: 错误:

MultiFetch.java:12: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.Configuration;
                         ^ 
MultiFetch.java:13: package org.apache.hadoop.conf does not exist
import org.apache.hadoop.conf.Configured;
                         ^
MultiFetch.java:14: package org.apache.hadoop.fs does not exist
import org.apache.hadoop.fs.Path;
                       ^
MultiFetch.java:15: package org.apache.hadoop.io does not exist
import org.apache.hadoop.io.Text;

Am i selecting wrong jar to execute the file or am i following wrong procedure to compile the java file. 我选择了错误的jar来执行文件还是我按照错误的程序来编译Java文件。 Please do let some correct this error. 请让一些纠正此错误。

Most of the above errors are related with not able to find Hadoop libraries to compile your sample application. 上述大多数错误与找不到Hadoop库来编译示例应用程序有关。

A sample Java based Map/Reduce sample build command is as below: 一个基于Java的Map / Reduce示例构建命令示例如下:

$javac \
 -classpath ${HADOOP_HOME}/hadoop-${HADOOP_VERSION}-core.jar \
 -d wordcount_classes \
 WordCount.java 

In my case, the jar file is hadoop-0.20.203.1-SNAPSHOT-core.jar . 就我而言,jar文件是hadoop-0.20.203.1-SNAPSHOT-core.jar If you take a look at your command you will see there is something not right: 如果您查看一下命令,您会发现有些不正确的地方:

javac -classpath $HADOOP_COMMON_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client- core-3.0.0-SNAPSHOT.jar -d multifetch_classes MultiFetch.java

What you can do is you can build you sample just by using classpath as given in sample above. 您可以做的是,您可以使用上面示例中给出的classpath来构建示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM