Hadoop 截断/不一致的计数器名称
现在,我有一个Hadoop工作,它创建了一个非常有名的计数器。
例如,下面的一个:.此计数器在 Web 界面和方法调用时被截断。我发现Hadoop对计数器max名称有限制,此设置ID用于配置此限制。因此,我将其递增到,Web界面现在显示完整的计数器名称。但计数器仍然返回截断的名称。stats.counters.server-name.job.job-name.mapper.site.site-name.qualifier.qualifier-name.super-long-string-which-is-not-within-standard-limits
getName()
mapreduce.job.counters.counter.name.max
500
getName()
有人可以解释一下这一点或指出我的错误吗?谢谢。
编辑 1
我的Hadoop服务器配置由单个服务器组成,上面有HDFS,YARN和map-reduce本身。在 map-reduce 期间,有一些计数器增量,作业完成后,在 I 获取使用 .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
方法从 yarn 返回一堆计数器,这些计数器具有截断的名称和完整的显示名称。 - 无法调试映射和化简器本身,但在日志记录的帮助下,该方法似乎在化简器执行期间工作正常。
org.apache.hadoop.mapreduce.Counter#getName