线程" main"中的例外情况在hadoop中格式化namenode

时间:2015-04-29 04:53:06

标签: hadoop hadoop2

satya@ubuntu:~/hadoop/bin$ hadoop namenode -format
  

DEPRECATED:不建议使用此脚本执行hdfs命令。   而是使用hdfs命令。

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.

4 个答案:

答案 0 :(得分:3)

通常会出现此错误(Unsupported major.minor version),因为在编译期间使用较高的JDK,在运行时使用较低的JDK。在这种情况下,51对应于JDK 7(对于更多版本映射,请访问this link),这表明 无论JVM 1.6运行时加载什么,它都适用于JVM 1.7。尝试使用JDK 1.7并使用JAVA_HOME中的hadoop-env.sh环境变量进行设置。

答案 1 :(得分:1)

默认的java版本和你的Hadoop的java版本应该匹配。这样做:

java -version

打开hadoop-env.sh(可以在hadoop配置文件夹中找到)并搜索JAVA_HOME。这个java版本和默认的java版本应该匹配。

  

注意:将您的JAVA_HOME设置为指向jdk文件夹而不是您的java文件夹

答案 2 :(得分:0)

如果你能展示你的Hadoop版本会更好......但对于Hadoop 2,我认为你可以试试新的格式命令

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

所以在你的情况下,输入

satya@ubuntu:~/hadoop/bin$ hdfs namenode -format

(我指的是适用于您情况的Hadoop 2.7.0。)

答案 3 :(得分:0)

我也遇到了这个问题。当我输入:

$hadoop classpath

我发现hdfs的类路径是错误的。然后我做了

vi ~/.bashrc 
export HADOOP_HDFS_HOME=$HADOOP_HOME

它有效,希望它有所帮助。