Как запустить программу Hadoop?
Я установил Hadoop на своем ноутбуке и успешно выполнил пример программы, приведенной в руководстве по установке. Но я не могу запустить программу.
[email protected]:~/hadoop/ch2$ hadoop MaxTemperature input/ncdc/sample.txt output
Exception in thread "main" java.lang.NoClassDefFoundError: MaxTemperature
Caused by: java.lang.ClassNotFoundException: MaxTemperature
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:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: MaxTemperature. Program will exit.
В книге говорилось, что мы должны установить путь класса Hadoop, написав
[email protected]:~/hadoop/ch2$ export HADOOP_CLASSPATH=build/classes
Основной класс определяется в файле MaxTemperature.java, который я выполняю. Как установить путь класса Hadoop? Нужно ли это делать для всего выполнения программы или только один раз? Где я должен помещать папку ввода. Мой код находится в /home/rohit/hadoop/ch 2, и моя установка Hadoop находится в/home/hadoop.
Ответы
Ответ 1
Вы должны упаковать свое приложение в JAR файл, который намного проще и менее подвержен ошибкам, чем прокрутка с папками классов.
В вашем случае вы также должны скомпилировать файл .java. Вы сказали, что MaxTemparature.java, но также должен быть класс MaxTemperature.class, прежде чем вы сможете его запустить.
Ответ 2
вот ансамбль в 3 этапа:
1:
javac -verbose -classpath C:\\hadoop\\hadoop-0.19.2-core.jar MaxTemperature*.java -d build/classes
2:
put *.class in build/classes
3:
export HADOOP_CLASSPATH=${HADOOP_HOME}/path/to/build/classes
(вам нужно создать каталог build/classes)
С наилучшими пожеланиями
Валид
Ответ 3
Я тоже нашел эту проблему, пройдя через книгу Hadoop (O'Reilly). Я исправил это, установив переменную HADOOP_CLASSPATH в файле hadoop-env.sh в вашем каталоге конфигурации.
Ответ 4
-
Сначала скомпилируйте файлы Java, как указано walid:
javac -classpath path-to-hadoop-0.19.2-core.jar .java-files -d folder-to-contain-classes
-
Создайте файл jar классов приложений:
jar cf filename.jar *.classes
В любом из того, экспортируете ли вы классы в файл jar или используете определенную папку для хранения файлов классов, вы должны определить HADOOP_CLASSPATH
, указывая на этот конкретный файл или папку класса, содержащие файл класса. Так что во время запуска команды Hadoop она должна знать, где искать указанную для основного класса.
-
set HADOOP_CLASSPATH
export HADOOP_CLASSPATH=path-to-filename.jar
или
export HADOOP_CLASSPATH=path-to-folder-containing-classes
-
Запуск с использованием команды Hadoop:
hadoop main-class args
Ответ 5
Вам не обязательно нужен файл jar, но вы помещали MaxTemperature в пакет?
Если это так, скажем, ваш MaxTemperature.class
файл находится в yourdir/bin/yourpackage/
, все, что вам нужно сделать, это:
export HADOOP_CLASSPATH=yourdir/bin
hadoop yourpackage.MaxTemperature
Ответ 6
после того, как вы сделаете свой класс файлом jar:
hadoop jar MaxTemperature.jar MaxTemperature
в основном:
hadoop jar jarfile main [args]