1

我已经安装了 Hadoop 3.1.1,它正在工作。但是,当我尝试编译 WordCount 示例时,我收到此错误:

/usr/local/hadoop/libexec/hadoop-functions.sh: line 2358: HADOOP_COM.SUN.TOOLS.JAVAC.MAIN_USER: bad substitution
/usr/local/hadoop/libexec/hadoop-functions.sh: line 2453: HADOOP_COM.SUN.TOOLS.JAVAC.MAIN_OPTS: bad substitution

为了编译,我使用了下一行:

hadoop com.sun.tools.javac.Main WordCount.java

我在 .bashrc 中有下一个变量:

#Hadoop variables
export HADOOP_HOME=/usr/local/hadoop
export CONF=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#Java home
export JAVA_HOME=${JAVA_HOME}/java-8-oracle

#Path Java Tools
export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar

这次我使用的是 Oracle 的 Java 8,因为 Ubuntu 18.08 LTS 的 apt-get 没有给我安装 OpenJDK8 的选项。我已经更新和升级了 Ubuntu。

我已经阅读了很多不同的帖子和可能的解决方案,但我无法解决它。

4

1 回答 1

1

这是我在https://janzhou.org/2014/how-to-compile-hadoop.html中找到的可行解决方案

设置 HADOOP_CLASSPATH:

export HADOOP_CLASSPATH=$(bin/hadoop classpath)

编译:

javac -classpath ${HADOOP_CLASSPATH} -d WordCount/ WordCount.java
于 2019-10-20T03:09:04.313 回答