2013-09-24 29 views
12

Tôi biết đã có nhiều bài đăng về ngoại lệ này, nhưng tôi không thể khắc phục vấn đề này. Classpath phải được chỉnh sửa Tôi nghĩ rằng để giải quyết nó. Tôi đang cố gắng chạy một chương trình có tên DistMap trong cơ sở hạ tầng hadoop. Đây là lỗi tôi nhận được.Ngoại lệ trong chủ đề "chính" 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 

mà java nói

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

echo $ CLASSPATH đưa ra một dòng trống

mèo ~/.bash_profile nói

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 

Cập nhật:

$ 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 file jar cuối cùng có những lớp PLATFORMNAME và FsShell. Tuy nhiên nó không hoạt động.

Mọi người có thể giúp tôi khắc phục sự cố này không?

Cảm ơn

+0

Dường như nó không thể định vị 'hadoop-core.jar', chỉ cần đảm bảo tệp jar được đưa vào' CLASSPATH' của bạn. – Aaron

+0

được thực hiện như thế này? PATH = $ PATH: $ HOME/bin: /usr/lib/hadoop/hadoop-core.jar – Ashwin

+0

Tôi có phải đổi PATH thành $ PATH: $ usr/java/jdk1.6.0_32/bin không? – Ashwin

Trả lời

0

Hadoop HADOOP_CLASSPATH issues

này sẽ rất hữu ích.

Cảm ơn & Kính trọng,
Alok Thaker

+0

Tôi đã không hoàn toàn hiểu vì có nhiều thư mục hadoop với nhiều lọ. Tôi không hiểu cái nào cần thiết. – Ashwin

+0

Tôi đã bao gồm tất cả các lọ trong đường dẫn lớp của mình. vẫn không làm việc :( – Ashwin

16

hadoop-auth-2.2.0.jar nên có mặt ở đó cho hadoop2.2.0
Thêm hadoop auth jar cho phiên bản của bạn

2

Nếu bạn là người dùng quạ và phải đối mặt với vấn đề này -

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

LƯU Ý: :hadoop-client:2.5.2 một mình đã không mang lại tất cả các phụ thuộc hadoop cần thiết. Đó là lý do tại sao tôi đã thêm hadoop-common, điều này mang lại tất cả các yêu cầu bắt buộc.

Các vấn đề liên quan