この例外に関して多くの投稿があったことは知っていますが、この問題を修正することはできません。クラスパスは編集する必要があります。解決する必要があると思います。 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
どのJavaは言う
/usr/Java/jdk1.6.0_32/bin/Java
echo $ CLASSPATHは空白行を与えます
猫〜/ .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/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/hadoop-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/hadoop-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というクラスがあります。それでも動作しません。
誰かがこの問題を修正するのを手伝ってくれませんか?
ありがとう
hadoop-auth-2.2.0.jarhadoop2.2.のために存在する必要があります
追加hadoop auth jarバージョンに
あなたが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
を追加しました。
私の特定のケースでは、私はMavenを使用しています。POMとクラスパスの両方にhadoop-authがありましたが、まだこの例外が発生していました。
最終的にそれを修正したのは、POMの依存関係のスコープを「提供」から「コンパイル」に変更したことです。