2013-09-24 6 views
12

Wiem, że było wiele postów dotyczących tego wyjątku, ale nie jestem w stanie rozwiązać tego problemu. Ścieżka Classpath musi być edytowana, jak sądzę, aby ją rozwiązać. Próbuję uruchomić program o nazwie DistMap w infrastrukturze hadoop. To jest błąd, który dostaję.Wyjątek w wątku "główny" 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. 
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 

który java mówi

/usr/java/jdk1.6.0_32/bin/java 

echo $ CLASSPATH daje pustą linią

cat ~/.bash_profile mówi

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 

Aktualizacja:

$ 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

2 ostatnie pliki jar mieć tych klas PlatformName i FsShell. Nadal nie działa.

Czy ktoś może mi pomóc rozwiązać ten problem?

Dzięki

+0

Wygląda na to, że nie może zlokalizować 'hadoop-core.jar', po prostu upewnij się, że plik JAR jest dołączony do' CLASSPATH'. – Aaron

+0

jest to zrobione w ten sposób? PATH = $ PATH: $ HOME/bin: /usr/lib/hadoop/hadoop-core.jar – Ashwin

+0

Czy muszę zmienić tę PATH na $ PATH: $ usr/java/jdk1.6.0_32/bin? – Ashwin

Odpowiedz

0

Hadoop HADOOP_CLASSPATH issues

Byłoby to pomocne.

Dzięki & Pozdrawiam,
Alok Thaker

+0

Nie bardzo rozumiem, ponieważ istnieje wiele folderów hadoop z wieloma słoikami. Nie rozumiem, który z nich ustawić. – Ashwin

+0

Zawarłem wszystkie słoiki w mojej ścieżce klas. wciąż nie działa :( – Ashwin

16

Hadoop-auth-2.2.0.jar powinny być tam hadoop2.2.0
Dodaj Hadoop auth słoik dla danej wersji

2

Jeśli jesteś użytkownikiem maven i masz do czynienia z tym problemem -

<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> 

UWAGA: Tylko nie przyniósł wszystkich wymaganych zależności mizetów. Dlatego dodałem hadoop-common, który przyniósł wszystkie wymagane deps.