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

时间:2012-05-10 08:46:17

标签: java hadoop javac

我创建了一个.java文件,可以在cloudera hadoop上运行。要编译它,

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

错误:

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;

我选择了错误的jar来执行文件,或者我是否按照错误的程序编译java文件。请让一些纠正此错误。

1 个答案:

答案 0 :(得分:1)

上述大多数错误都与无法找到Hadoop库来编译示例应用程序有关。

基于Java的Map / Reduce示例构建命令示例如下:

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

就我而言,jar文件是hadoop-0.20.203.1-SNAPSHOT-core.jar。如果你看看你的命令,你会发现有些事情是不对的:

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

您可以做的就是使用上面示例中给出的classpath为您建立样本。