Куда инфраструктура hadoop mapreduce отправляет мои операторы System.out.print ()? (Стандартный вывод) - PullRequest
52 голосов
/ 08 июля 2010

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

Ответы [ 4 ]

58 голосов
/ 26 апреля 2011

На самом деле стандартный вывод показывает только System.out.println() из классов, не относящихся к карте .

System.out.println() для карт и фаз сокращения можно увидеть в журналах.Простой способ доступа к журналам -

http://localhost:50030/jobtracker.jsp->click на завершенном задании -> нажмите на карту или уменьшите задачу -> нажмите на номер задачи-> журналы задач-> журналы стандартного вывода.

Надеюсь, это поможет

24 голосов
/ 03 сентября 2012

Другой способ - через терминал:

1) Перейдите в каталог Hadoop_Installtion , затем в "logs / userlogs" .
2) Откройте каталог job_id .
3) Проверьте каталоги с помощью _ m_ , если вам нужен вывод картографа, или _r_ , если вы ищете для редукторов.

Пример : в Hadoop-20.2.0:

> ls ~/hadoop-0.20.2/logs/userlogs/attempt_201209031127_0002_m_000000_0/
log.index   stderr      stdout      syslog

Вышеуказанное означает:
Hadoop_Installation: ~ / hadoop-0.20.2
job_id: job_201209031127_0002
_m_: задача карты, «номер карты»: _000000_

4) open stdout , если вы использовали "system.out.println" или stderr , если вы использовали "system.err.append".

PS. другие версии hadoop могут иметь другую иерархию, но все они должны быть в каталоге $ Hadoop_Installtion / logs / userlogs.

14 голосов
/ 12 сентября 2015

В кластере Hadoop с yarn вы можете извлекать журналы, включая stdout, с помощью:

yarn logs -applicationId application_1383601692319_0008

По некоторым причинам я обнаружил, что это более полно, чем то, что я вижувеб-интерфейс.Веб-интерфейс не перечислил вывод System.out.println() для меня.

8 голосов
/ 17 ноября 2013

чтобы получить свой стандартный вывод и записать сообщение на консоль, вы можете использовать систему регистрации Apache Commons для вашего маппера и редуктора.

public class MyMapper extends Mapper<..,...,..,...> {

    public static final Log log = LogFactory.getLog(MyMapper.class)

    public void map() throws Exception{
        // Log to stdout file
        System.out.println("Map key "+ key);

        //log to the syslog file
        log.info("Map key "+ key);

        if(log.isDebugEanbled()){
            log.debug("Map key "+ key);
        }

        context.write(key,value);
    }
}
...