У меня есть проблема с 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 полностью.
Любые предложения или разъяснения значительно ценились бы.
К сожалению, нет настраиваемого способа предотвратить это. Каждая задача для задания получает один каталог в history/userlogs, в котором будут храниться выходные файлы журнала задач stdout, stderr и syslog. Часы сохранения помогут предотвратить накопление слишком многих из них, но вам придется написать хороший инструмент ротации журналов, чтобы автоматически их тарировать.
У нас тоже была эта проблема, когда мы записывали в NFS-монтирование, потому что все узлы использовали один и тот же каталог history/userlogs. Это означает, что одного задания с 30 000 задач будет достаточно, чтобы сломать FS. Локальное ведение журнала — это действительно правильный путь, когда ваш кластер действительно начинает обрабатывать много данных.
Если вы уже ведете журнал локально и по-прежнему умудряетесь обрабатывать более 30 000 задач на одном компьютере менее чем за неделю, возможно, вы создаете слишком много маленьких файлов, из-за чего для каждого задания создается слишком много картографов.
Согласно документации, Hadoop использует log4j для ведения журнала . Может быть, вы ищете не в том месте ...
Настройка hadoop для использования log4j и настройка
log4j.appender.FILE_AP1.MaxFileSize=100MB
log4j.appender.FILE_AP1.MaxBackupIndex=10
, как описано на , эта страница вики не работает?
Глядя на исходный код LogLevel , кажется, что hadoop использует ведение журнала общих прав и будет пытаться использовать log4j по умолчанию или регистратор jdk, если log4j не указан в пути к классам.
Между прочим, можно изменить уровни журнала во время выполнения, посмотрите руководство по командам .
У меня была такая же проблема. Перед запуском Hadoop установите переменную среды «HADOOP_ROOT_LOGGER = WARN, console».
export HADOOP_ROOT_LOGGER="WARN,console"
hadoop jar start.jar