来源:《Hadoop权威指南(第2版)》
计数器是一种收集作业统计信息的有效手段,用于质量控制或应用级统计,可辅助诊断系统故障。
1. 内置计数器
Hadoop为每个作业维护若干内置计数器,以描述作业的各项指标。
内置计数器包括:
- Map-Reduce框架:map输入记录、map跳过记录、map输入字节、map输出记录、map输出字节、combine输入记录、combine输出记录、reduce输入组、reduce输入记录、reduce输出记录、reduce跳过组、溢出记录。
- 文件系统:文件系统读的字节、文件系统写的字节
- 作业计数:已启用的map任务、已启用的reduce任务、失败的map任务、失败的reduce任务、数据本地的map任务、机架本地的map任务、其它本地的map任务。
内置计数器由关联任务维护,定期传送到tasktracker,tasktracker传给jobtracker。
2. 用户自定义Java计数器
MapReduce可以自定义计数器,多个计数器由一个java枚举类型定义。
枚举类型的名称为组的名称,枚举类型的字段为计数器的名称。
计数器是全局的,即MapReduce框架跨所有的map和reduce收集计数器,然后汇聚在一起。
3. 计数器获取
- Web界面
- 命令行(hadoop job -counter)
- Java API