欢迎投稿

今日深度:

hadoop counter,

hadoop counter,


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

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

计数器声明

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

计数器操作

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

计数器检索

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控制台输出如下:

www.htsjk.Com true http://www.htsjk.com/Hadoop/41421.html NewsArticle hadoop counter, hadoop计数器的主要价值在于可以让开发人员以全局的视角来审查程序的运行情况,及时做出错误诊断并进行相应处理 hadoop内置了很多计数器,这些计数器大体上可分为三组...
相关文章
    暂无相关文章
评论暂时关闭