Потоковая передача Hadoop: как посмотреть журналы приложений?

Я вижу все журналы Hadoop на моем пути /usr/local/hadoop/logs

но где я могу увидеть журналы уровня приложения? Например :

картограф.py

import logging

def main():
    logging.info("starting map task now")
    // -- do some task -- //
    print statement  

редуктор.py

import logging
def main():
    for line in sys.stdin:
        logging.info("received input to reducer - " + line)  
        // -- do some task -- //
        print statement

Где я могу увидеть logging.info или соответствующие операторы журнала моего приложения?
Я использую Python и использую hadoop-streaming

Спасибо


person daydreamer    schedule 25.10.2011    source источник


Ответы (2)


Для потоковой передачи Hadoop используется STDIN/STDOUT. для передачи пар ключ/значение между преобразователями и преобразователями, поэтому сообщения журнала должны быть записаны в определенный файл журнала — проверьте пример кода и документация по ведению журнала Python для более подробной информации. Этот Запрос также может помочь.

person Praveen Sripati    schedule 26.10.2011
comment
Спасибо, Правин, я добавил операторы logging.warn, и он начал накапливать журналы в файле /usr/local/hadoop/logs/userlogs/‹mapper|reducer›dir/stderr. - person daydreamer; 26.10.2011
comment
для записи (пять лет спустя...) уровень ведения журнала по умолчанию — logging.WARNING; чтобы выдавать операторы информационного уровня в приведенном выше коде, необходимо изменить корневой (по умолчанию) уровень регистратора: logging.getLogger().setLevel(logging.INFO) - person slushy; 23.12.2016

Hadoop собирает stderr, который можно просмотреть на сайте Hadoop map/reduce status. Так что вы можете просто написать в stderr.

person Sergey Zyuzin    schedule 04.01.2013
comment
просто напишите в stderr: import sys; print >> sys.stderr, 'spam' или другие альтернативы в stackoverflow.com/questions/5574702/ - person Nickolay; 03.06.2015