java - exemple - Nom du compteur tronqué/incohérent Hadoop
mapreduce example java (1)
Pour l'instant, j'ai un travail Hadoop qui crée des compteurs avec un assez grand nom.
Par exemple, la suivante:
stats.counters.server-name.job.job-name.mapper.site.site-name.qualifier.qualifier-name.super-long-string-which-is-not-within-standard-limits
.
Ce compteur est tronqué sur l'interface Web et sur l'appel de la méthode
getName()
.
J'ai découvert que Hadoop avait des limites sur le nom maximal du compteur et que ces paramètres, id
mapreduce.job.counters.counter.name.max
à configurer cette limite.
J'ai donc incrémenté ceci à
500
et l'interface Web affiche maintenant le nom complet du compteur.
Mais
getName()
du compteur retourne toujours le nom tronqué.
Quelqu'un pourrait-il, s'il vous plaît, expliquer cela ou me signaler mes erreurs? Je vous remercie.
EDIT 1
La configuration de mon serveur Hadoop consiste en un serveur unique avec HDFS, YARN et map-reduction lui-même.
Lors de la réduction de la carte, il existe des incréments de compteurs et une fois le travail terminé, dans
ToolRunner
je récupère des compteurs à l'aide de
org.apache.hadoop.mapreduce.Job#getCounters
.
EDIT 2
La version de Hadoop est la suivante:
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
J'ai fait des recherches supplémentaires et il semble que ce problème décrit une situation similaire à la mienne. Mais c'est assez déroutant parce que je peux augmenter le nombre de jetons mais pas la longueur du nom du compteur ...
EDIT 3
Aujourd'hui, j'ai passé pas mal de temps à déboguer les éléments internes de Hadoop. Quelques trucs intéressants:
-
org.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters
méthodeorg.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters
renvoie un ensemble de compteurs provenant d'un fil avec des noms TRUNCATED et FULL . -
Impossible de déboguer les cartes et les réducteurs, mais avec l'aide de la journalisation, il semble que la méthode
org.apache.hadoop.mapreduce.Counter#getName
fonctionne correctement pendant l'exécution du réducteur.
getName()
semble être obsolète
Vous pouvez également
getUri()
dont la longueur maximale par défaut est de 255.
Lien vers la documentation:
getUri()
Je n'ai pas essayé personnellement, mais cela semble être une solution possible à ce problème.