На данный момент у меня есть работа Hadoop, которая создает счетчики с довольно громким именем.
Например, следующий: stats.counters.server-name.job.job-name.mapper.site.site-name.qualifier.qualifier-name.super-long-string-which-is-not-within-standard-limits
. Этот счетчик усекается в веб-интерфейсе и при вызове метода getName()
. Я обнаружил, что Hadoop имеет ограничения на имя счетчика max, и этот идентификатор настроек mapreduce.job.counters.counter.name.max
предназначен для настройки этого ограничения. Поэтому я увеличил это значение до 500
, и веб-интерфейс теперь показывает полное имя счетчика. Но getName()
счетчика по-прежнему возвращает усеченное имя.
Может ли кто-нибудь объяснить это или указать мне на мои ошибки? Спасибо.
ОБНОВЛЕНИЕ 1
Моя конфигурация сервера Hadoop состоит из одного сервера с HDFS, YARN и map-Reduction на нем. Во время уменьшения карты есть некоторые приращения счетчиков, и после завершения задания в ToolRunner
я выбираю счетчики с использованием org.apache.hadoop.mapreduce.Job#getCounters
.
ОБНОВЛЕНИЕ 2
Версия Hadoop следующая:
Hadoop 2.6.0-cdh5.8.0
Subversion http://github.com/cloudera/hadoop -r 042da8b868a212c843bcbf3594519dd26e816e79
Compiled by jenkins on 2016-07-12T22:55Z
Compiled with protoc 2.5.0
From source with checksum 2b6c319ecc19f118d6e1c823175717b5
This command was run using /usr/lib/hadoop/hadoop-common-2.6.0-cdh5.8.0.jar
Я провел дополнительное расследование, и, похоже, эта проблема описывает ситуацию, аналогичную моей. Но это довольно странно, потому что я могу увеличить количество счетчиков, но не длину имени счетчика...
ОБНОВЛЕНИЕ 3
Сегодня я потратил довольно много времени на отладку внутренних компонентов Hadoop. Некоторые интересные вещи:
- Метод
org.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters
возвращает несколько счетчиков из пряжи с TRUNCATED-именами и FULL-отображаемыми именами. - Не удалось отладить карты и редукторы самостоятельно, но с помощью логирования кажется, что метод
org.apache.hadoop.mapreduce.Counter#getName
работает правильно во время выполнения редуктора.