2011-09-28 179 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腳本命令。