Hadoop计数器大小有限制。它默认为120。我尝试使用配置“mapreduce.job.counters.limit”来改变它,但它不起作用。我见过源代码。这就像“org.apache.hadoop.mapred.Counters”类中的JobConf实例是私有的。 以前有人见过吗?你的解决方案是什么? THX:)
答案 0 :(得分:5)
您可以在JT,TT,客户端节点上覆盖mapred-site.xml
中的该属性,但请确保这将是系统范围内的修改:
<configuration>
...
<property>
<name>mapreduce.job.counters.limit</name>
<value>500</value>
</property>
...
</configuration>
然后在群集上重新启动mapreduce服务。
答案 1 :(得分:4)
在Hadoop 2中,此配置参数称为
mapreduce.job.counters.max
但是,在命令行或Configuration对象中设置它是不够的。您需要调用静态方法
org.apache.hadoop.mapreduce.counters.Limits.init()
在mapper或reducer的setup()方法中,以使设置生效。
使用2.6.0和2.7.1进行测试。
答案 2 :(得分:0)
para由配置文件设置,而下面的段落将生效
mapreduce.job.counters.max=1000
mapreduce.job.counters.groups.max=500
mapreduce.job.counters.group.name.max=1000
mapreduce.job.counters.counter.name.max=500
答案 3 :(得分:0)
只需添加此项以防万一我们遇到同样的问题:使用MRJob增加计数器。
要提高计数器的数量,请将emr_configurations
添加到mrjob.conf
(或将其作为配置参数传递给MRJob):
runners:
emr:
emr_configurations:
- Classification: mapred-site
Properties:
mapreduce.job.counters.max: 1024
mapreduce.job.counters.counter.name.max: 256
mapreduce.job.counters.groups.max: 256
mapreduce.job.counters.group.name.max: 256
答案 4 :(得分:-1)
我们可以将限制自定义为仅针对特定作业的命令行选项,而不是在mapred-site.xml
中进行更改。
-Dmapreduce.job.counters.limit=x
-Dmapreduce.job.counters.groups.max=y
注意:x
和y
是基于您的环境/要求的自定义值。