如何在Hadoop 2.0.3 alpha中创建自定义计数器

时间:2013-07-29 14:34:13

标签: hadoop hdfs

我是Hadoop的新手。我正在尝试在我的reducer中编写一个自定义计数器。我找到了一个使用自定义计数器的例子,但它在hadoop 1.x中。我没有在hadoop 2.x中找到适当的计数器解决方案   任何人都可以帮我解决这个问题..? 在此先感谢

1 个答案:

答案 0 :(得分:0)

通过查看2.x的代码,我相信它的工作原理与早期版本的示例相同

计数器由org.apache.hadoop.mapreduce.counters.AbstractCounters维护

当有一个尚未在缓存中的计数器请求时,findCounter会动态生成一个新的计数器

  public synchronized C findCounter(Enum<?> key) {
    C counter = cache.get(key);
    if (counter == null) {
      counter = findCounter(key.getDeclaringClass().getName(), key.name());
      cache.put(key, counter);
    }
    return counter;
  }

(它使用Enum类名作为此枚举定义的计数器的组名)

传递给map和reduce方法的org.apache.hadoop.mapreduce.Context对象实现了getCounter(Enum)方法