Hadoop Counter


hadoop计数器的主要价值在于可以让开发人员以全局的视角来审查程序的运行情况,及时做出错误诊断并进行相应处理
hadoop内置了很多计数器,这些计数器大体上可分为三组,MapReduce相关、文件系统相关和作业调度相关,分别统计每一个环节的处理情况,计数详情可通过http://master:50030/jobdetails.jsp界面进行查看

除了内置计数器,hadoop还提供自定义计数器的功能,自定义计数器多用于统计某一类别记录的个数,或类别所占总数的百分比

计数器声明

1.通过枚举声明
  1. Context context...  
  2. //枚举类相当于groupName,枚举类型相当于counterName  
  3. context.getCounter(Enum enum)  
Context context...
//枚举类相当于groupName,枚举类型相当于counterName
context.getCounter(Enum enum)
2.动态声明
  1. Context context...  
  2. //传递groupName和counterName即可,无需声明枚举  
  3. context.getCounter(String groupName,String counterName)  
Context context...
//传递groupName和counterName即可,无需声明枚举
context.getCounter(String groupName,String counterName)

计数器操作

counter.setValue(long value);//设置初始值
counter.increment(long incr);//增加计数

计数器检索

  1. Job job...  
  2. job.waitForCompletion(true);  
  3. Counters counters=job.getCounters();  
  4. Counter counter=counters.findCounter(Enum enum);//查找计数器  
  5. long value=counter.getValue();//获取计数值  
Job job...
job.waitForCompletion(true);
Counters counters=job.getCounters();
Counter counter=counters.findCounter(Enum enum);//查找计数器
long value=counter.getValue();//获取计数值

计数结果显示

mapreduce任务执行完成之后,会在控制台打印出计数结果,包括hadoop内置的计数器和用户自定义的计数器,如图所示

通过比较可以发现自定义的计数器显示格式并不十分友好,直接将枚举类显示在了控制台
而内置计数器显示内容更加人性化一些,原因在于其对计数器的显示做了个性化的定制
假设计数器的枚举声明如下:
public class XMLParser {
    enum Sex{
        Man,
        Women
    }
    ...
}
则可在XMLParser类所在包中声明这样一个属性文件 XMLParser_Sex.properties
#CounterGroupName用来声明groupName的控制台显示信息
CounterGroupName=Person Sex
#枚举类型加.name用来声明counterName的控制台显示信息
Man.name=boy
Women.name=girl
经过上述处理重新执行mapreduce控制台输出如下:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值