Изключение в основната нишка при форматиране на 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 runtime, то беше предназначено за 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