복붙노트

[HADOOP] 스레드 "main"의 예외 java.lang.NoClassDefFoundError : org / apache / hadoop / util / PlatformName

HADOOP

스레드 "main"의 예외 java.lang.NoClassDefFoundError : org / apache / hadoop / util / PlatformName

이 예외와 관련하여 많은 게시물이 있었지만이 문제를 해결할 수는 없습니다. 클래스 패스를 편집해야한다고 생각합니다. hadoop 인프라에서 DistMap이라는 프로그램을 실행하려고합니다. 이것은 내가 얻는 오류입니다.

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

어느 자바 말한다

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

echo $ CLASSPATH는 빈 줄을 준다.

cat ~ / .bash_profile이 말한다.

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

최신 정보:

$ 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 / / usr / lib / h adoop-0.20-mapreduce / hadoop-examples-2.0. 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 개의 jar 파일에는 PlatformName과 FsShell 클래스가 있습니다. 여전히 작동하지 않습니다.

누구든지이 문제를 해결할 수 있도록 도와 주시겠습니까?

감사

해결법

  1. ==============================

    1.hadoop-auth-2.2.0.jar은 hadoop2.2.0에 있어야합니다. 버전에 따라 hadoop 인증을 추가하십시오.

    hadoop-auth-2.2.0.jar은 hadoop2.2.0에 있어야합니다. 버전에 따라 hadoop 인증을 추가하십시오.

  2. ==============================

    2.Maven 사용자이고이 문제에 직면 한 경우 -

    Maven 사용자이고이 문제에 직면 한 경우 -

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

    참고 : : hadoop-client : 2.5.2만으로는 필요한 모든 hadoop 의존성을 가져 오지 못했습니다. 그래서 hadoop-common을 추가하여 필요한 모든 deps를 가져 왔습니다.

  3. ==============================

    3.Hadoop HADOOP_CLASSPATH 문제

    Hadoop HADOOP_CLASSPATH 문제

    이것은 도움이 될 것입니다.

    감사 & 감사합니다, Thaker의 제안

  4. from https://stackoverflow.com/questions/18974098/exception-in-thread-main-java-lang-noclassdeffounderror-org-apache-hadoop-uti by cc-by-sa and MIT license