2016-01-07 2 views
0

Я пытаюсь запустить задание MapReduce из файла jar и продолжать получать ошибку ClassNotFoundException. Я запускаю Hadoop 1.2.1 на виртуальной машине Centos 6.ClassNotFoundException при запуске hasoop jar

Сначала я составил файл exercise.java (и класс) в баночке файл exercise.jar используя следующий скрипт compile.sh:

#!/bin/bash 

javac -classpath /pathto/hadoop-common-1.2.1.jar:\ 
/pathto/hadoop-core-1.2.1.jar /pathto/exercise.java 

jar cvf exercise.jar /pathto/*.class 

Это прекрасно работает и баночка завершается успешно. Я затем попытаться запустить фактическую MapReduce работу, используя сценарий оболочки exec.sh:

#!/bin/bash 

export CLASSPATH=$CLASSPATH:/pathto/hadoop-common-1.2.1.jar:\ 
/pathto/hadoop-core-1.2.1.jar:/pathto/exercise.class 

hadoop jar exercise.jar exercise /data/input/inputfile.txt /data/output 

This trows ClassNotFoundException ошибки:

Exception in thread "main" java.lang.ClassNotFoundException: exercise 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:274) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:153) 

Я понимаю, явные имена путей не могут быть необходимыми, но я был немного отчаянно, чтобы дважды проверить все. Я подтвердил, что в моем exercise.java файле exercise.class находится в конфигурации задания через job.setJarByClass(exercise.class); и подтверждено exercise.class содержится в exercise.jar. Кажется, это не понятно.

ОБНОВЛЕНИЕ Сценарий exec.sh с полным путем exercise.class. Она хранится в моем Затмении директории проекта:

#!/bin/bash 

export CLASSPATH=$CLASSPATH:/pathto/hadoop-common-1.2.1.jar:\ 
/pathto/hadoop-core-1.2.1.jar:/home/username/workspace/MVN_Hadoop/src/main/java.com.amend.hadoop.MapReduce/* 

hadoop jar \ 
exercise.jar \ 
/home/username/workspace/MVN_Hadoop/src/main/java.com.amend.hadoop.MapReduce/exercise \ 
/data/input/inputfile.txt \ 
/data/output 

Когда я на самом деле попытаться запустить скрипт exec.sh с использованием явно выписанных имен путей, я также получаю совершенно другой набор ошибок:

Exception in thread "main" java.lang.ClassNotFoundException: /home/hdadmin/workspace/MVN_Hadoop/src/main/java/come/amend/hadoop/MapReduce/exercise 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:274) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:153) 
+0

Предположительно класс определяется как «Упражнение» внутри 'exercise.java', если вы следовали соглашениям Java. Попробуйте сделать 'hadoop jar exercise.jar Exercise /data/input/inputfile.txt/data/output' (capital' E') –

+0

Вам не следует использовать '/ home/username/workspace/MVN_Hadoop/src/main/java .com.amend.hadoop.MapReduce/exercise', так как это ваша ** локальная файловая система **, а не файл класса Java –

+0

@ cricket_007 Я изначально не делал этого, просто разместил его там по запросу srikanth ниже. Если я удаляю его, все равно получаю исходную ошибку ... – gtnbz2nite

ответ

0

Я видел эти возможные ошибки. С Упражнение для упражнений Hadoop jant exercise.jar /data/input/inputfile.txt/data/output укажите полный путь класса упражнения. I.e org.name.package.exercise если есть. Для перекрестной проверки откройте файл jar и проверьте местоположение места осуществления. Чтобы продолжить, Hadoop не ожидает, что банки будут включены в банки, так как путь Hadoop установлен глобально.

NEW: См. Следующий путь - это нечто странное. "/ home/hdadmin/workspace/MVN_Hadoop/src/main/java/come/modify/hadoop/MapReduce/exercise"

Если вы используете свою банку, как путь может быть таким конкретным, как jar дорожка. Это может быть только «come/modify/hadoop/MapReduce/exercise».

+0

извините за поздний ответ, но я обновил свой вопрос с вашего запроса. Благодаря! – gtnbz2nite

+0

Я снова отредактировал свой ответ. пожалуйста, обратитесь – srikanth

Смежные вопросы