Wordcount C ++ Hadoop не работает - PullRequest
1 голос
/ 06 июня 2011

Я пытаюсь запустить пример wordcount в C ++, как эта ссылка описывает способ сделать: Запуск программы WordCount на C ++ . Компиляция работает нормально, но когда я попытался запустить мою программу, появилась ошибка:

bin / hadoop pipe -conf ../dev/word.xml -input testtile.txt -output wordcount-out
06.11.06 14:23:40 WARN mapred.JobClient: Не задан файл JAR задания. Пользовательские классы не могут быть найдены
. См. JobConf (Класс) или JobConf # setJar (Строка).
06.11.06 14:23:40 INFO mapred.FileInputFormat: общее количество входных путей для обработки: 1
06.11.06 14:23:40 INFO mapred.JobClient: Выполнение задания: job_201106061207_0007
06.11.06 14:23:41 INFO mapred.JobClient: карта 0% уменьшить 0%
06.11.06 14:23:53 INFO mapred.JobClient: Идентификатор задачи: попытки_201106061207_0007_m_000000_0, Статус: НЕ УДАЛЕННЫЙ
java.io.IOException
в org.apache.hadoop.mapred.pipes.OutputHandler.waitForAuthentication (OutputHandler.java:188) в org.apache.hadoop.mapred.pipes.Application.waitForAuthentication (Application.java:194) в org.apache.hadoop.mapred.pipes.Application. (Application.java:149) в org.apache.hadoop.mapred.pipes.PipesMapRunner.run (PipesMapRunner.java:68) в org.apache.hadoop.mapred.MapTask.runOldMapper (MapTask.java:435) в org.apache.hadoop.mapred.MapTask.run (MapTask.java:371) на org.apache.hadoop.mapred.Child $ 4.run (Child.java:259) at java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:416) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1059) в org.apache.hadoop.mapred.Child.main (Child.java:253)
попытки_201106061207_0007_m_000000_0: серверу не удалось пройти аутентификацию. Выход

Я запускаю Hadoop на Fedora на двух узлах, и я следовал инструкциям по настройке по этой ссылке: Запуск Hadoop на многоузловом кластере . Я попробовал пример Hadoop для Wordcount с этой командой:

bin / hadoop jar hadoop-examples-0.20.203.0.jar wordcount testtile.txt wordcount-out

И эта команда работает нормально. Вот почему я не понимаю, почему моя программа не работает. Поэтому я надеюсь, что у кого-то есть представление о том, что я делаю неправильно, или если кто-то уже исправил эту ошибку.

1 Ответ

1 голос
/ 09 июня 2011

Я не знаю, должен ли я ответить на мой вопрос таким образом или отредактировать свой вопрос. В любом случае, я нахожу решение и хочу сказать его всем, кто получит такую ​​же ошибку.

После нескольких дней исследований и попыток я понимаю, что Fedora и C ++ на 64-битной версии для Hadoop не очень подходят. Я попытался скомпилировать Hadoop wordcount C ++ с помощью ant, как описано в вики. Но муравей дает мне ошибку: libssl и stdint.

Во-первых, если вы используете Fedora, вы должны добавить -lcrypto к LIBS в .configure . Это является причиной того, что зависимость от libcrypto теперь должна быть явно указана на этих платформах при связывании с libssl. (См. ошибка в Fedora ).

Вторая проблема: ant выдает много ошибок о файлах C ++: для решения этой проблемы вам просто нужно добавить include: stdint.h в верхней части файла.

Тогда сборка удалась. Затем я попытался запустить пример wordcount на моем кластере Hadoop, и он работает, а мой - нет. Я ожидал, что проблема возникла из библиотеки, которую я только что исправил, и я был прав: я попытался запустить пример Hadoop с библиотекой из каталога установки hadoop, но он не работал, и я получил ту же ошибку.

Это может быть объяснено тем фактом, что ant перекомпилировал библиотеку C ++, необходимую для Hadoop (с исправлением, которое я сделал), и вместо этого использовал библиотеку в каталоге установки Hadoop.

...