首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

[Hadoop源码解读](4)MapReduce篇之Counter相关类

2012-08-31 
[Hadoop源码解读](四)MapReduce篇之Counter相关类当我们定义一个Counter时,我们首先要定义一枚举类型:# Re

[Hadoop源码解读](四)MapReduce篇之Counter相关类

                     [Hadoop源码解读](4)MapReduce篇之Counter相关类

  当我们定义一个Counter时,我们首先要定义一枚举类型:

# ResourceBundle properties file for job-level countersCounterGroupName=                  Job Counters NUM_FAILED_MAPS.name=              Failed map tasksNUM_FAILED_REDUCES.name=           Failed reduce tasksTOTAL_LAUNCHED_MAPS.name=          Launched map tasksTOTAL_LAUNCHED_REDUCES.name=       Launched reduce tasksOTHER_LOCAL_MAPS.name=             Other local map tasksDATA_LOCAL_MAPS.name=              Data-local map tasksRACK_LOCAL_MAPS.name=              Rack-local map tasksFALLOW_SLOTS_MILLIS_MAPS.name=     Total time spent by all maps waiting after reserving slots (ms)FALLOW_SLOTS_MILLIS_REDUCES.name=  Total time spent by all reduces waiting after reserving slots (ms)
它存放的是job级别的counters的本地化名字。形式是name = displayName。

这样,我们就可以每次利用name从改文件中读取displayName,使得当我们改变这个properties文件中的某个displayName的时候,不需要改动程序。


   Counters是一个Job的Counter最后的汇聚地,在分析Job类得时候,我们看到Job.getCounters()方法是用RunningJob得到的,而RunningJob是获取作业情况的一组接口。因为Counters会最终被JobTracker收集,要不断从TaskTracker收集并更新,因此它包含一个缓冲最近读的Counter的cache来进行优化,它还有一个存储Job的所有Counter的TreeMap。当我们使用findCounter((Enum<?> key)方法查找Counter时,它会先在cache中查找,如果没有找到,则会从TreeMap中查找并放入cache中。Counters还实现了Iterable接口,以支持对Counters的遍历。另外还提供了increase所以Counter的方法incrAllCounters()。

  


热点排行