启动Hadoop时出现“错误:无法找到或加载主类”

时间:2013-10-30 11:10:38

标签: java windows hadoop

我正在尝试在我的Windows 7机器上运行Hadoop(2.2.0)(是的,我知道在Linux上运行它会更好,但目前它不是一个选项)。 我按照http://ebiquity.umbc.edu/Tutorials/Hadoop/14%20-%20start%20up%20the%20cluster.htmlhttp://blog.sqltrainer.com/2012/01/installing-and-configuring-apache.html

上发布的说明进行操作

Evetyhing一直很好,直到我试图启动Hadoop。我尝试运行的每个操作都以Error: Could not find or load main class ...错误结束。
对于例如运行

./hadoop version

结束

Error: Could not find or load main class org.apache.hadoop.util.VersionInfo

它看起来像是一个类路径问题。但是,我不知道如何解决它。我尝试设置不同的环境变量,比如$ HADOOP_COMMON_HOME或$ HADOOP_HOME,但没有运气。

有什么想法吗?

5 个答案:

答案 0 :(得分:0)

当您经常收到此错误消息时,您使用的是错误的Java版本,或者该程序是使用较旧的Java版本编译的。

您可以打开cmd(命令提示符)并输入java -version

来检查您的版本

答案 1 :(得分:0)

将此行添加到〜/ .bash_profile为我工作:

  

导出HADOOP_PREFIX = / where_ever_you_install_hadoop / hadoop

仅供参考,我对此帖有同样的答案:Could not find or load main class org.apache.hadoop.util.VersionInfo

答案 2 :(得分:0)

我也一直试图让Windows 7运行并运行Hadoop。对我来说,问题是Hadoop以Cygwin格式传递CLASSPATH

CLASSPATH=/cygdrive/c/foo:/cygdrive/c/bar

但是,Java期望Windows格式的CLASSPATH

CLASSPATH=c:\foo;c:\bar

看着hadoop-0.19.1向我展示了他们是如何处理的。 您可以在bin/hadoop之前插入以下语句,在它最后调用Java之前(并重复其他java调用sh脚本)

cygwin=false
case "`uname`" in
CYGWIN*) cygwin=true;;
esac

if $cygwin; then
  echo Cygwin
  CLASSPATH=`cygpath -p -w "$CLASSPATH"`
  HADOOP_HOME=`cygpath -d "$HADOOP_HOME"`
  HADOOP_LOG_DIR=`cygpath -d "$HADOOP_LOG_DIR"`
  TOOL_PATH=`cygpath -p -w "$TOOL_PATH"`
fi

export CLASSPATH=$CLASSPATH
echo $CLASSPATH
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"

答案 3 :(得分:0)

我自己也遇到过这个问题。这就是我解决问题的方法。

将以下内容添加到〜/ .bashrc文件中:

export HADOOP_CLASSPATH=$(cygpath -pw $(hadoop classpath)):$HADOOP_CLASSPATH

注意:您可以直接在Windows上安装Hadoop2.2 +。你不需要Cygwin。

答案 4 :(得分:0)

我的问题是资源管理器(纱线)无法加载Hadoop库(罐子)。 我通过更新配置解决了这个问题。 将此添加到yarn-site.xml:

<property>
<name>yarn.application.classpath</name>
<value>C:/hadoop-2.8.0/share/hadoop/mapreduce/*,C:/hadoop-2.8.0/share/hadoop/mapreduce/lib/*,C:/Hadoop-2.8.0/share/hadoop/common/*,C:/Hadoop-2.8.0/share/hadoop/common/lib/*,
    C:/hadoop-2.8.0/share/hadoop/hdfs/*,C:/hadoop-2.8.0/share/hadoop/hdfs/lib/*,C:/hadoop-2.8.0/share/hadoop/yarn/*,C:/hadoop-2.8.0/share/hadoop/yarn/lib/*</value>
</property>

请注意,根据您的系统,此处使用的路径可以是相对的。