线程" main"中的例外情况java.lang.UnsupportedClassVersionError:org / apache / hadoop / fs / FsShell:不支持的major.minor版本51.0

时间:2015-10-07 05:45:57

标签: hadoop hdfs

我正在尝试在Hadoop上执行以下命令

hadoop fs -ls /

但它正在退回并出现错误

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/fs/FsShell : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    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:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.apache.hadoop.fs.FsShell.  Program will exit.

我尝试更新java但它仍然给我同样的错误。

注意:同一命令在其他节点上工作,但在群集节点上不在2上。

4 个答案:

答案 0 :(得分:1)

尝试将JDK更新到1.7版。也许,您已经更新了JRE而不是JDK。

答案 1 :(得分:1)

如果您使用CDH,则可能需要将java版本更改为jdk1.7.0_67-cloudera。将JAVA_HOME从/usr/java/jdk1.6.0_31更改为/usr/java/jdk1.7.0_67-cloudera后,我解决了问题。

答案 2 :(得分:0)

该命令无效,因为它指向节点上较新版本的hadoop jar,而不是已安装版本的hadoop jar

指向放置在

中的罐子
/usr/lib/hadoop

然后我尝试从安装目录执行它,如下所示

/opt/cloudera/parcels/CDH/lib/hadoop/bin/hadoop fs -ls /

它对我有用。

答案 3 :(得分:0)

Unsupported major.minor version 51.0

您需要Java 7(或更高版本)来运行它。 请参阅:https://www.java.com/de/download/faq/java_7.xml

如果您已经安装了Java 7(或更高版本),请执行以下命令:

C:\Program Files\Java\<Java Version (jre7/jre8>\bin\java.exe -jar <Path To .Jar>