2011-09-28 182 views
1

因此,我试图在MAC OS X Leopard上安装hadoop,按照本说明中的步骤操作:Running Hadoop on a OS X Single Node ClusterHadoop MAC操作系统安装问题

我达到了第4步:格式化并运行Hadoop的,在这里我输入了以下内容:

hadoop-*/bin/hadoop namenode -format 

这产生了以下不愉快的输出:

 
Macbook009:~ Hadoop$ hadoop-*/bin/hadoop namenode -format 
    Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:676) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:317) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375) 
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:676) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:317) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375) 

我做了一些google搜索,并得知JAVA_HOME可能设置不正确。我创建了一个.bash_profile文件,如下所示:

export JAVA_HOME=/system/Library/Frameworks/JavaVM.framework/Versions/1.6/Home 
export HADOOP_HOME=~/Users/Hadoop/hadoop-0.20.203.0 

export PATH=$HADOOP_HOME/bin:$PATH 

不行。同样的错误错误。 我在做什么错?

+0

你是如何安装它的?你可以尝试使用自制软件安装。 https://github.com/mxcl/homebrew(brew install hadoop) –

回答

1

设置JAVA_HOME可能仍然存在问题,因为它可能与Web上的示例不同。在终端使用此命令查找JAVA_HOME目录/ usr/libexec目录/ JAVA_HOME

+0

此命令解决了我的问题。谢谢! – cs31415

1

这是在您运行的jre比编译类文件的jre旧时引起的。例如运行1.6 jre 1.5编译的java。如果这个类是1.6编译的,那么它将不能用于1.5。

做一个

java -version 

,看看哪些JRE你有。很可能你有一个旧的,需要升级它。

+0

Java版本“1.6.0_26” Java(TM)SE运行时环境(build 1.6.0_26-b03-384-9M3425) Java HotSpot(TM) 64位服务器虚拟机(构建20.1-b02-384,混合模式) – cs31415

1

尝试输入jps并查看实际运行的节点数。 应该有6个。你不应该有希望的问题。

2

我怀疑实际运行Hadoop的JVM不是预期的JVM,而是一个较旧的Java(Java 5)。通过运行ps(或任何Mac等价物)并检查命令行来验证。

尝试将JAVA_HOME设置为$HADOOP_HOME/conf/hadoop-env.sh,与您在.bash_profile中所做的操作相同。

0

然而,对于像上述10.9设定PATH OS X的新版本是行不通的。

找到一种方法,您可以在文件/ etc /路径中为MAC添加默认PATH环境。

使用终端在SUDO模式下打开此文件。

$ sudo nano/etc/paths(提示时输入密码)。

以下面的格式追加路径。

/users/hadoop/hadoop-1.2.1/bin

/users/hadoop/hadoop-1.2.1/sbin

保存文件并重新启动机器。下次不需要键入整个命令从脚本运行Hadoop脚本命令。