2014-01-19 194 views
16

我按照“http://codesfusion.blogspot.com/2013/10/setup-hadoop-2x-220-on-ubuntu.html”在Ubuntu上安装hadoop。但是,在检查的Hadoop版本,我得到以下错误:无法找到或加载主类org.apache.hadoop.util.VersionInfo

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

此外,当我尝试:HDFS的NameNode -format

我得到以下错误:

Error: Could not find or load main class org.apache.hadoop.hdfs.server.namenode.NameNode

的使用的java版本是:

java version "1.7.0_25" 
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2) 
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode) 
+0

可能的重复[什么是“无法找到或加载主类”是什么意思?](http://stackoverflow.com/questions/18093928/what-does-could-not-find-or-load-main-类平均值) –

+0

我的路径已设置。我无法弄清楚什么是错的。 – usb

+0

他们有没有预先打包的二进制文件?这通常是要走的路。 –

回答

1

尝试检查:

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

对不起,但你能详细说明一下吗?我为我的hduser检查过.bashrc,它包含了本教程中提到的所有路径。我错过了什么吗?我也跑了。 〜/ .bashrc – usb

+0

我的意思是说,在他完成'$ vi .bashrc'后的教程中设置了所有变量后,他并不真正运行该文件,因此变量不会导出到当前会话中。您必须在同一个终端中运行它,然后像'hadoop'一样运行其他命令。或者重新登录或重新启动。我只是猜测,也许这是错误的另一个原因。 –

+0

感谢您的帮助,但我试图重新登录并重新启动。似乎没有工作。此外,我无法找到任何其他职位相同的错误,所以我认为这应该是一件非常微不足道的事情。 – usb

6

您可能没有正确地按照说明操作。这里有一些事情,试图帮助我们/你诊断是:

  • 在您运行hadoop version外壳,运行export向我们展示相关的环境变量列表。

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

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

+0

我得到这些上运行的出口: 声明-x CLASSPATH = “在/ usr /本地/ Hadoop的/股/的Hadoop /常用” 声明-x HADOOP_COMMON_HOME = “在/ usr /本地/ Hadoop的” 声明-x HADOOP_HDFS_HOME =”在/ usr /本地/ Hadoop的” 声明-x HADOOP_INSTALL = “在/ usr /本地/ Hadoop的” 声明-x HADOOP_MAPRED_HOME = “在/ usr /本地/ Hadoop的” 声明-x HOME = “/家/ hduser” 声明 - x JAVA_HOME =“/ usr/lib/jvm/jdk /” declare -x PATH =“/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin :/ usr/games:/ usr/local/hadoop/bin:/ usr/local/hadoop/sbin“ declare -x YARN_HOME =”/ usr/local/hadoop“ – usb

+0

我只添加了”export JAVA_HOME =/usr/lib/jvm/jdk /“到hadoop-env.sh,休息是第四个就是这样。 – usb

+0

你需要整个“hadoop-env.sh”文件吗? – usb

2

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

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

所以才:

  1. $ sudo的开放〜/ .bash_profile中再加入上述行
  2. $源在〜/ .bash_profile

希望这有助于(:

8

这是一个环境变量设置的问题。显然,我没有找到一个可以工作到现在的工程。依靠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 

我想,是我的问题将得到解决。

0

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

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

然后打开终端,写这个命令

source ~/.bashrc 

然后检查

hadoop version 
+0

按照步骤,没有为我工作。 – Crt

+0

@Crt打开新的终端,并再次检查 – Elsayed

+0

谢谢,但是,我试过了,并没有工作。 – Crt

3

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

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

1

我得到了同样的问题与hadoop 2.7.2 我应用了技巧后显示我能够启动hdfs但后来我发现我使用的焦油档案丢失了一些重要的作品。所以下载2.7.3一切正常,因为它应该工作。

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

如果您正在继续阅读...这是我如何解决问题... 全新安装后,hadoop无法找到罐子。 我做了这个小伎俩:

我所在的位置的罐子
我做了一个文件夹的符号链接 $ HADOOP_HOME /股/的Hadoop /共同

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

为version命令你需要的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现在指挥的作品。

我再次是一个快乐的人,我知道这不是一个有礼貌的解决方案,但至少对我有用。

0

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

export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH

0

我用

export PATH=$HADOOP_HOME/bin:$PATH 

而不是

export PATH=$PATH:$HADOOP_HOME/bin 

然后,它为我工作!

+0

这不应该改变任何东西...... – Crt

相关问题