Невозможно запустить файлы классов Java с потоковой передачей - PullRequest
0 голосов
/ 22 июля 2011

Всякий раз, когда я пытаюсь использовать файлы классов Java в качестве своего картографа и / или редуктора, я получаю следующую ошибку:

java.io.IOException: не удалось запустить программу "MapperTst.class": java.io.IOException: error = 2, такого файла или каталога нет

Я выполнил следующую команду на терминале:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-streaming-0.20.203.0.jar -file /home/hadoop/codes/MapperTst.class -mapper /home/hadoop/codes/MapperTst.class -file /home/hadoop/codes/ReducerTst.class -reducer /home/hadoop/codes/ReducerTst.class  -input gutenberg/* -output gutenberg-outputtstch27

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Предполагая, что ваше полностью определенное имя класса Mapper (включая пакет) - codes.MapperTest, а имя класса редуктора - codes.ReducerTst,

Упакуйте свою Карту и уменьшите классы в файл jar, скажем / home / hadoop/test.jar Ваша команда должна работать, если вы измените ее на:

hadoop@ubuntu:/usr/local/hadoop$ bin/hadoop jar \
   contrib/streaming/hadoop-streaming-0.20.203.0.jar \
   -libjars /home/hadoop/test.jar \
   -mapper codes.MapperTst \
   -reducer codes.ReducerTst \
   -input gutenberg/* -output gutenberg-outputtstch27
1 голос
/ 19 декабря 2011

У меня была такая же проблема.Решение было для меня, чтобы поместить Java Mapper / Reducer / Combiner в указанной упаковке.С пакетом по умолчанию это не будет работать.Это даст вам ошибку, которую вы имели.

0 голосов
/ 23 июля 2011

Потоковая передача не должна работать с классами Java. Предполагается запускать все, что может рассматриваться как команда linux. Входные данные будут подаваться во входной поток, а выходные данные будут обрабатываться как выходные данные сопоставления. Если у вас уже есть класс mapper в java - вам не нужна потоковая передача.

...