java - tutorial - how to configure hadoop
Nombre de contador truncado/inconsistente de Hadoop (1)
Por ahora, tengo un trabajo de Hadoop que crea contadores con un nombre bastante grande.
Por ejemplo, el siguiente:
stats.counters.server-name.job.job-name.mapper.site.site-name.qualifier.qualifier-name.super-long-string-which-is-not-within-standard-limits
.
Este contador se trunca en la interfaz web y en la llamada al método
getName()
.
Descubrí que Hadoop tiene limitaciones en el nombre máximo del contador y este id de configuración
mapreduce.job.counters.counter.name.max
es para configurar este límite.
Así que incrementé esto a
500
y la interfaz web ahora muestra el nombre completo del contador.
Pero
getName()
del contador aún devuelve el nombre truncado.
¿Podría alguien, por favor, explicar esto o señalarme mis errores? Gracias.
EDITAR 1
La configuración de mi servidor Hadoop consiste en un único servidor con HDFS, YARN y map-reduce en sí mismo.
Durante la reducción de mapas, hay algunos incrementos de contador y después de que se completa el trabajo, en
ToolRunner
busco contadores con el uso de
org.apache.hadoop.mapreduce.Job#getCounters
.
EDITAR 2
La versión de Hadoop es la siguiente:
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
Hice una investigación adicional y parece que este problema describe una situación similar a la mía. Pero es bastante confuso porque puedo aumentar el número de contadores pero no la longitud del nombre del contador ...
EDITAR 3
Hoy, pasé bastante tiempo depurando partes internas del Hadoop. Algunas cosas interesantes:
-
org.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters
métodoorg.apache.hadoop.mapred.ClientServiceDelegate#getJobCounters
devuelve un montón de contadores de hilo con nombres TRUNCADOS y nombres de visualización COMPLETOS . -
No se pudieron depurar mapas y reductores, pero con la ayuda del registro parece que
org.apache.hadoop.mapreduce.Counter#getName
métodoorg.apache.hadoop.mapreduce.Counter#getName
funciona correctamente durante la ejecución del reductor.
getName()
parece estar en desuso
Alternativamente, se puede
getUri()
que viene con una longitud máxima predeterminada de 255.
Enlace de documentación:
getUri()
No lo he probado personalmente, pero parece ser una posible solución a este problema.