Hadoop Counter
2015-07-19 15:25
176 查看
hadoop计数器的主要价值在于可以让开发人员以全局的视角来审查程序的运行情况,及时做出错误诊断并进行相应处理
hadoop内置了很多计数器,这些计数器大体上可分为三组,MapReduce相关、文件系统相关和作业调度相关,分别统计每一个环节的处理情况,计数详情可通过http://master:50030/jobdetails.jsp界面进行查看
除了内置计数器,hadoop还提供自定义计数器的功能,自定义计数器多用于统计某一类别记录的个数,或类别所占总数的百分比
[java]
view plaincopyprint?
Context context... //枚举类相当于groupName,枚举类型相当于counterName context.getCounter(Enum enum)
[java]
view plaincopyprint?
Context context... //传递groupName和counterName即可,无需声明枚举 context.getCounter(String groupName,String counterName)
counter.increment(long incr);//增加计数
view plaincopyprint?
Job job...
job.waitForCompletion(true);
Counters counters=job.getCounters();
Counter counter=counters.findCounter(Enum enum);//查找计数器
long value=counter.getValue();//获取计数值
通过比较可以发现自定义的计数器显示格式并不十分友好,直接将枚举类显示在了控制台
而内置计数器显示内容更加人性化一些,原因在于其对计数器的显示做了个性化的定制
假设计数器的枚举声明如下:
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控制台输出如下:
hadoop计数器的主要价值在于可以让开发人员以全局的视角来审查程序的运行情况,及时做出错误诊断并进行相应处理
hadoop内置了很多计数器,这些计数器大体上可分为三组,MapReduce相关、文件系统相关和作业调度相关,分别统计每一个环节的处理情况,计数详情可通过http://master:50030/jobdetails.jsp界面进行查看
除了内置计数器,hadoop还提供自定义计数器的功能,自定义计数器多用于统计某一类别记录的个数,或类别所占总数的百分比
计数器声明
1.通过枚举声明[java]
view plaincopyprint?
Context context... //枚举类相当于groupName,枚举类型相当于counterName context.getCounter(Enum enum)
Context context... //枚举类相当于groupName,枚举类型相当于counterName context.getCounter(Enum enum)2.动态声明
[java]
view plaincopyprint?
Context context... //传递groupName和counterName即可,无需声明枚举 context.getCounter(String groupName,String counterName)
Context context... //传递groupName和counterName即可,无需声明枚举 context.getCounter(String groupName,String counterName)
计数器操作
counter.setValue(long value);//设置初始值counter.increment(long incr);//增加计数
计数器检索
[java]view plaincopyprint?
Job job...
job.waitForCompletion(true);
Counters counters=job.getCounters();
Counter counter=counters.findCounter(Enum enum);//查找计数器
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控制台输出如下:
相关文章推荐
- 在Linux上实现摄像头中的霍夫圆检测
- 利用opencv训练分类器
- 用redhat7.0源码包安装zabbix以及配置实现
- linux——ssh服务器的配置
- Linux忘记ROOT密码后的处理方式
- c实现linux下的数据库备份
- linux命令,系统安全相关命令--passwd
- Linux系统中时间相关命令(cal,date,hwclock)
- op应用:官方,wifidog,portal,uci,luci,脚本,框架,usb
- op应用:官方,wifidog,portal,uci,luci,脚本,框架,usb
- Nginx负载均衡配置实例详解
- linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频
- Centos 下Python 升级遇到的zlib,ssl 的问题
- linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频
- 使用 Docker/LXC 迅速启动一个桌面系统
- 使用 Docker/LXC 迅速启动一个桌面系统
- 快速部署Python应用:Nginx+uWSGI配置详解
- 快速部署Python应用:Nginx+uWSGI配置详解
- Drop dual
- centos7下Mairadb忘记密码修改