编译Hadoop示例程序时找不到主类

M R*_*hfi 6 java hadoop word-count digital-ocean

嗨,我是Hadoop的新手,几天前就开始学习了.我只是按照Digital Ocean的说明设置了Hadoop集群.之后我只是尝试了一个名为WordCount的简单示例程序,来自Hadoop文档.

我的hadoop版本是2.5.1,与本教程使用的版本相同,它在Ubuntu Precise上运行.正如教程所说,我确保我已经完成了正确的设置.这是〜/ .bashrc内容的结束.

        ...
#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
export HADOOP_PREFIX=/usr/local/hadoop
#HADOOP VARIABLES END
Run Code Online (Sandbox Code Playgroud)

另外,我检查了我的java home配置,结果如下

sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      manual mode
* 3            /usr/lib/jvm/java-7-oracle/jre/bin/java          1         manual mode
Run Code Online (Sandbox Code Playgroud)

所以我将bashrc和hadoop-env.sh文件中的所有JAVA_HOME值都更改为/usr/lib/jvm/java-7-oracle.我也确保Dfs和Yarn都已启动.

但是,当我使用此命令编译 WordCount.java时

hadoop com.sun.tools.javac.Main WordCount.java 
Run Code Online (Sandbox Code Playgroud)

没有什么是我的方式.我收到了这个错误.请注意,我正在使用Hadoop命令而不是bin/hadoop,因为命令正常工作,因为它是在bashrc文件中定义的.

Error: Could not find or load main class com.sun.tools.javac.Main
Run Code Online (Sandbox Code Playgroud)

这个错误的可能原因是什么以及如何摆脱这个?我认为这可能是java类路径问题,但我仍然无法弄清楚细节.关于这个问题的每个解决方法都是关于执行javajavac命令,而不是hadoop命令.

我想在开始学习它的工作原理之前先让示例程序工作.任何帮助,将不胜感激.谢谢..

Vij*_*uri 2

尝试从hadoop目录执行

cd YARN_HOME bin/hadoop jar absolute path to jar fileWordCountinput path output path in hdfs

查看以下链接 http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v2.0