Исключение в основном потоке при форматировании namenode в hadoop

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

УСТАРЕЛО: Использование этого скрипта для выполнения команды 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.

person Satya    schedule 29.04.2015    source источник


Ответы (4)


Эта ошибка (Unsupported major.minor version) обычно появляется из-за использования более высокого JDK во время компиляции и более низкого JDK во время выполнения. В данном случае 51 соответствует JDK 7 (дополнительные сопоставления версий см. по этой ссылке), это означает, что какая бы ни была загружена среда выполнения JVM 1.6, она предназначалась для JVM 1.7. Попробуйте использовать JDK 1.7 и установите это с помощью переменной среды JAVA_HOME в hadoop-env.sh.

person Ashrith    schedule 29.04.2015

Версия Java по умолчанию и версия Java Hadoop должны совпадать. Сделай это:

java -version

Откройте hadoop-env.sh (можно найти в папке конфигурации Hadoop) и найдите JAVA_HOME. Эта версия Java и версия Java по умолчанию должны совпадать.

ПРИМЕЧАНИЕ. Установите JAVA_HOME так, чтобы он указывал на папку jdk, а не на папку bin вашей Java.

person Rajesh N    schedule 29.04.2015

Будет лучше, если вы покажете свою версию 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 который должен относиться к вашей ситуации.)

person Liyang Chen    schedule 29.04.2015

Я тоже встречал вопрос. И когда я печатаю:

$hadoop classpath

Я считаю, что путь к классам hdfs неверен. Тогда я сделал

vi ~/.bashrc 
export HADOOP_HDFS_HOME=$HADOOP_HOME

Это работает, надеюсь, это поможет.

person ZzzzzzzBin    schedule 27.11.2015