it-swarm.com.de

Ausnahme im Thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/util/PlatformName

Ich weiß, dass es zu dieser Ausnahme viele Posts gab, aber ich kann dieses Problem nicht beheben. Classpath muss bearbeitet werden, denke ich, um es aufzulösen. Ich versuche, ein Programm namens DistMap in der hadoop-Infrastruktur auszuführen. Dies ist der Fehler, den ich erhalte.

Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.util.PlatformName
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        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.util.PlatformName.  Program will exit.
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/fs/FsShell
Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.fs.FsShell
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        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.fs.FsShell.  Program will exit.
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/util/PlatformName
Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.util.PlatformName
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        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.util.PlatformName.  Program will exit.
Exception in thread "main" Java.lang.NoClassDefFoundError: org/Apache/hadoop/fs/FsShell
Caused by: Java.lang.ClassNotFoundException: org.Apache.hadoop.fs.FsShell
        at Java.net.URLClassLoader$1.run(URLClassLoader.Java:202)
        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.fs.FsShell.  Program will exit.
Error could not create input directory /distmap_output_input folder on hdfs file system

was Java sagt

/usr/Java/jdk1.6.0_32/bin/Java

echo $ CLASSPATH ergibt eine leere Zeile

cat ~/.bash_profile sagt

cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

Aktualisieren:

$ HADOOP_HOME /usr/lib/hadoop

$ HADOOP_CLASSPATH 

/usr/lib/hadoop-0.20-mapreduce/hadoop-ant-2.0.0-mr1-cdh4.4.0.jar:/usr/lib/hadoop‌​-0.20-mapreduce/hadoop-ant.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-examples-2.0‌​.0-mr1-cdh4.4.0.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-examples.jar:/usr/lib/h‌​adoop-0.20-mapreduce/hadoop-core.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-core-2‌​.0.0-mr1-cdh4.4.0.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-test-2.0.0-mr1-cdh4.4‌​.0.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-test.jar:/usr/lib/hadoop-0.20-mapreduce/hadoop-tools-2.0.0-mr1-cdh4.4.0.jar:/usr/lib/hado‌​op-0.20-mapreduce/hadoop-tools.jar:/usr/lib/hadoop-0.20-mapreduce/lib/*jar:/usr/lib/hadoop/hadoop-common.jar:/usr/lib/hadoop/hadoop-common-2.0.0-cdh4.4.0.jar

Die letzten 2 JAR-Dateien haben die Klassen PlatformName und FsShell. Es funktioniert immer noch nicht.

Kann mir bitte jemand helfen, dieses Problem zu beheben?

Vielen Dank

13
Ashwin

hadoop-auth-2.2.0.jar sollte da sein für hadoop2.2.0
Fügen Sie hadoop auth jar für Ihre Version hinzu

18

Wenn Sie ein Maven-Benutzer sind und dieses Problem hatten, 

    <dependency>
        <groupId>org.Apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.client.version}</version>
    </dependency>
    <dependency>
        <groupId>org.Apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.client.version}</version>
    </dependency>

HINWEIS: :hadoop-client:2.5.2 alleine hat nicht alle erforderlichen Hadoop-Abhängigkeiten eingebracht. Deshalb habe ich hadoop-common hinzugefügt, das alle erforderlichen deps mitbrachte.

3
Thamme Gowda

In meinem speziellen Fall verwende ich Maven, und obwohl ich sowohl im POM als auch im Klassenpfad HADOOP-AUTH hatte, bekam ich immer noch diese Ausnahme.

Was es für mich endgültig regelte, war, den Umfang der Abhängigkeit im POM von "zur Verfügung gestellt" auf "kompiliert" zu ändern.

0
JoeMjr2

Hadoop HADOOP_CLASSPATH Probleme

Das wäre hilfreich.

Danke & Grüße,
Alok Thaker 

0
linux_fanatic