2015-04-29 24 views
0
[email protected]:~/hadoop/bin$ hadoop namenode -format 

棄用:這個腳本來執行HDFS命令已經廢棄的使用。 改爲使用hdfs命令。異常在線程「主」,而在Hadoop中格式化的NameNode

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hdfs/server/namenode/NameNode : Unsupported major.minor version 51.0 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
     at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
Could not find the main class: org.apache.hadoop.hdfs.server.namenode.NameNode. Program will exit. 

回答

0

這是更好,如果你能證明你的Hadoop版本...但Hadoop的2,我想你可以嘗試新的格式命令

[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format [-clusterid cid] [-force] [-nonInteractive] 

所以你的情況,類型

[email protected]:~/hadoop/bin$ hdfs namenode -format 

(我指的是Hadoop 2.7.0應該適用於您的情況。)

1

默認的java版本和你的Hadoop的java版本應該匹配。這樣做:

java -version 

打開hadoop-env.sh(可以在hadoop配置文件夾中找到),然後搜索JAVA_HOME。這個Java版本和默認的Java版本應該匹配。

注:設置你的JAVA_HOME指向jdk的文件夾,而不是你的java的bin文件夾

3

此錯誤(Unsupported major.minor version)通常會出現,因爲在編譯時和較低的JDK使用更高版本的JDK的運行。在這種情況下,51對應於JDK 7(對於更多版本映射,請訪問this link),這表明 無論JVM 1.6運行時加載多少,它都是針對JVM 1.7的。嘗試使用JDK 1.7並在hadoop-env.sh中使用JAVA_HOME環境變量進行設置。

0

我也遇到了這個問題。當我輸入:

$hadoop classpath 

我發現hdfs的類路徑是錯誤的。然後我做了

vi ~/.bashrc 
export HADOOP_HDFS_HOME=$HADOOP_HOME 

它的工作原理,希望它有幫助。

相關問題