Отладка приложений hadoop - PullRequest
7 голосов
/ 14 мая 2010

Я попытался распечатать значения с помощью System.out.println (), но они не будут отображаться на консоли. Как распечатать значения в приложении карты / сокращения для целей отладки с помощью Hadoop?

Спасибо, Дипак.

Ответы [ 5 ]

5 голосов
/ 15 мая 2010

Страница, на которую указывает @SquareCog, является очень хорошим источником информации об отладке задания MapReduce после его запуска в облаке.

Прежде чем вы достигнете этой точки, вам следует подумать о написании модульных тестов для ваших картографов и редукторов, чтобы вы могли проверить, работает ли базовая логика. Если вы заинтересованы в модульных тестах для тестирования вашей карты и уменьшения логики, проверьте mrunit , который работает аналогично JUnit.

5 голосов
/ 14 мая 2010

Строки, напечатанные с использованием System.out.println и System.err.println, переходят в журналы, которые Hadoop записывает для каждого задания. Вы можете просматривать их с помощью веб-интерфейса, переходя к отдельным задачам.

См. Этот пост в блоге Cloudera, где вы найдете множество советов по тестированию и отладке заданий Hadoop: http://www.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/

3 голосов
/ 17 мая 2010

Я хотел бы добавить, что вы также можете использовать Counters Hadoop JavaDoc для отладки. Например. если вы хотите проверить, как часто передается определенная строка в вашей программе.

0 голосов
/ 20 сентября 2012

Если вы используете MRUnit & ApprovalTests, очень легко распечатать процесс сокращения карты. Здесь есть видео: http://t.co/leExFVrf

Например код

HadoopApprovals.verifyMapReduce(new WordCountMapper(), 
                             new WordCountReducer(), 0, "cat cat dog");

Будет выдавать вывод:

[cat cat dog] 
-> maps via WordCountMapper to ->
(cat, 1) 
(cat, 1) 
(dog, 1)

-> reduces via WordCountReducer to ->
(cat, 2) 
(dog, 1)
0 голосов
/ 14 марта 2012

System.out.println не направляется на терминал, а записывается в файлы журналов. Файлы журналов по умолчанию находятся в вашем каталоге Hadoop. Таким образом, вы можете ввести в терминале cat /hadoop-homedirectory/logs/userlogs/jobID/attemptID/stdout Вы также можете получить доступ к вашему через веб-интерфейс. Введите ip: 50070 / logs / userlogs.

...