无法find或加载主类org.apache.hadoop.util.VersionInfo

我跟着“ http://codesfusion.blogspot.com/2013/10/setup-hadoop-2x-220-on-ubuntu.html ”在Ubuntu上安装hadoop。 但是,在检查hadoop版本时,我得到以下错误:

错误:无法find或加载主类org.apache.hadoop.util.VersionInfo

另外,当我尝试: hdfs namenode -format

我得到以下内容:

错误:无法find或加载主类org.apache.hadoop.hdfs.server.namenode.NameNode

所用的java版本是:

Java版本“1.7.0_25”OpenJDK运行环境(IcedTea 2.3.10)(7u25-2.3.10-1ubuntu0.12.04.2)OpenJDK 64位服务器虚拟机(构build23.7-b01,混合模式)

谁能帮帮我吗? 谢谢!

这是一个环境变量设置的问题。 显然,我没有找到一个可以工作,直到现在。 我正在尝试2.6.4。 这是我们应该做的

 export HADOOP_HOME=/home/centos/HADOOP/hadoop-2.6.4 export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin export HADOOP_CONF_DIR=$HADOOP_HOME export HADOOP_PREFIX=$HADOOP_HOME export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop 

将这些添加到你的.bashrc中,不要忘记去做

 source ~/.bashrc 

我认为你的问题将像我的一样得到解决。

您可能没有按照说明正确。 这里有一些事情可以帮助我们/诊断:

  • 在运行hadoop version的shell中,运行export并显示相关环境变量的列表。

  • 向我们展示您放置在/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件中的内容。

  • 如果上述两个都不给你任何线索,那么找到并使用文本编辑器(暂时)修改hadoop包装器的shell脚本。 在开始的某处添加“set -xv”行。 然后运行hadoop version ,并告诉我们它产生了什么。

我面临同样的问题。 虽然看起来很简单,但是花了我两个小时的时间。 我尝试了以上所有的东西,但没有帮助。

我刚刚退出了我所在的shell,并再次登录到系统后再次尝试。 然后事情奏效!

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

 export HADOOP_PREFIX=/<where ever you install hadoop>/hadoop 

所以就:

  1. $ sudo open〜/ .bash_profile然后添加上述行
  2. $ source〜/ .bash_profile

希望这可以帮助 (:

尝试检查:

  • JAVA_HOME,Hadoop配置中的所有PATH相关变量
  • 运行: . ~/.bashrc . ~/.bashrc (注意前面的小数点),以使这些变量在您的环境中可用。 这个指南似乎没有提到这一点。

我用hadoop 2.7.2的时候遇到了同样的问题,我开始使用hdfs,但是后来发现我用的tar档案丢失了一些重要的部分。 所以下载2.7.3的一切工作,因为它应该工作。

我的第一个建议是再次下载相同版本或主要的tar.gz。

如果你正在继续阅读…这是我怎么解决这个问题…全新安装后,hadoop无法找到罐子。 我做了这个小窍门:

我找到了罐子的地方
我做了一个到$ HADOOP_HOME / share / hadoop / common的文件夹的符号链接

 ln -s $HADOOP_HOME/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib $HADOOP_HOME/share/hadoop/common 

对于版本命令,你需要hadoop-common-2.7.2.jar,这帮助我找到存储在哪里的罐子。

之后…

 $ bin/hadoop version Hadoop 2.7.2 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b165c4fe8a74265c792ce23f546c64604acf0e41 Compiled by jenkins on 2016-01-26T00:08Z Compiled with protoc 2.5.0 From source with checksum d0fda26633fa762bff87ec759ebe689c This command was run using /opt/hadoop-2.7.2/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib/hadoop-common-2.7.2.jar 

当然,现在任何hadoop / hdfs命令都可以使用。

我又是一个快乐的人,我知道这不是一个礼貌的解决方案,但至少对我来说是有效的。

我得到了这个错误,我通过编辑〜/ .bashrc来解决这个问题

 export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$PATH 

然后打开终端并写下这个命令

 source ~/.bashrc 

然后检查

 hadoop version 

我添加了上述的环境变量,但仍然无法正常工作。 在我的〜/ .bashrc中设置HADOOP_CLASSPATH,如下所示:

export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH