Конфигурирование Hadoop, регистрирующегося для предотвращения слишком многих файлов журнала

У меня есть проблема с Hadoop, производящим слишком много файлов журнала в $HADOOP_LOG_DIR/userlogs (файловая система Ext3 позволяет только 32 000 подкаталогов), который похож на ту же проблему в этом вопросе: Ошибка в MapReduce Hadoop

Мой вопрос: кто-либо знает, как настроить Hadoop, чтобы прокрутить dir журнала или иначе предотвратить это? Я стараюсь не просто устанавливать "mapred.userlog.retain.hours" и/или "mapred.userlog.limit.kb" свойства, потому что я хочу на самом деле сохранить файлы журнала.

Я также надеялся настроить это в log4j.properties, но смотрел на Hadoop 0.20.2 источника, он пишет непосредственно в файлы журнала вместо того, чтобы на самом деле использовать log4j. Возможно, я не понимаю, как это использует log4j полностью.

Любые предложения или разъяснения значительно ценились бы.

11
задан Community 23 May 2017 в 11:46
поделиться

4 ответа

К сожалению, нет настраиваемого способа предотвратить это. Каждая задача для задания получает один каталог в history/userlogs, в котором будут храниться выходные файлы журнала задач stdout, stderr и syslog. Часы сохранения помогут предотвратить накопление слишком многих из них, но вам придется написать хороший инструмент ротации журналов, чтобы автоматически их тарировать.

У нас тоже была эта проблема, когда мы записывали в NFS-монтирование, потому что все узлы использовали один и тот же каталог history/userlogs. Это означает, что одного задания с 30 000 задач будет достаточно, чтобы сломать FS. Локальное ведение журнала — это действительно правильный путь, когда ваш кластер действительно начинает обрабатывать много данных.

Если вы уже ведете журнал локально и по-прежнему умудряетесь обрабатывать более 30 000 задач на одном компьютере менее чем за неделю, возможно, вы создаете слишком много маленьких файлов, из-за чего для каждого задания создается слишком много картографов.

4
ответ дан 3 December 2019 в 09:19
поделиться

Согласно документации, Hadoop использует log4j для ведения журнала . Может быть, вы ищете не в том месте ...

1
ответ дан 3 December 2019 в 09:19
поделиться

Настройка hadoop для использования log4j и настройка

log4j.appender.FILE_AP1.MaxFileSize=100MB
log4j.appender.FILE_AP1.MaxBackupIndex=10

, как описано на , эта страница вики не работает?

Глядя на исходный код LogLevel , кажется, что hadoop использует ведение журнала общих прав и будет пытаться использовать log4j по умолчанию или регистратор jdk, если log4j не указан в пути к классам.

Между прочим, можно изменить уровни журнала во время выполнения, посмотрите руководство по командам .

2
ответ дан 3 December 2019 в 09:19
поделиться

У меня была такая же проблема. Перед запуском Hadoop установите переменную среды «HADOOP_ROOT_LOGGER = WARN, console».

export HADOOP_ROOT_LOGGER="WARN,console"
hadoop jar start.jar
5
ответ дан 3 December 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: