Hadoop WordCount错误

时间:2018-02-13 04:32:57

标签: java hadoop mapreduce

我正在关注此链接中的文档

https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Usage

当我尝试编译WordCount.java并创建一个jar时,我收到以下错误

bin/hadoop com.sun.tools.javac.Main WordCount.java
Error: Could not find or load main class com.sun.tools.javac.Main

我已经在hadoop-env.sh文件中验证了我的$ JAVA_HOME和$ HADOOP_CLASSPATH,并且还验证了我是否有jdk

以下是hadoop-env.sh

的内容
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/"
.......
.........
for f in $HADOOP_HOME/contrib/capacity-scheduler/*.jar; do
  if [ "$HADOOP_CLASSPATH" ]; then
    export HADOOP_CLASSPATH="$JAVA_HOME/lib/tools.jar"
  else
    export HADOOP_CLASSPATH=$f
  fi

我不确定错误背后的原因或我是否缺少其他关键配置?

1 个答案:

答案 0 :(得分:2)

这在循环中没有意义......也没有先检查变量是否存在

if [ "$HADOOP_CLASSPATH" ]; then
  export HADOOP_CLASSPATH="$JAVA_HOME/lib/tools.jar"
else

您需要设置HADOOP_CLASSPATH="$JAVA_HOME/lib/tools.jar",正如文档中所说的可以找到该类。该类仅在JDK中可用

但是,你可以运行javac命令来编译代码。不知道为什么文档让你调用那个类。

How to compile a Hadoop program

$ javac -classpath ${HADOOP_CLASSPATH} -d WordCount/ WordCount.java
     

创建jar:

$ jar -cvf WordCount.jar -C WordCount/ .
     

运行:

$ hadoop jar WordCount.jar WordCount input/ output

建议请使用Maven / Gradle创建正确的JAR文件,并使用IDE编写代码。

<子> P.S。实际上没有多少人写过普通的MapReduce