如何从Hadoop java API获取特定的MR计数器?

时间:2017-03-15 17:02:35

标签: java api hadoop

hadoop ui中,我们可以看到分隔列中的标准MR计数器:map-task,reduce-task和total。

enter image description here

但我在hadoop java API中没有看到这样的方法。我们如何从java api中获取分离的计数器,例如如何获得Map和Reduce列的 CPU花费时间(ms)值?

1 个答案:

答案 0 :(得分:1)

如果要获得分离的任务计数器,则需要对hadoop作业使用getTaskReports()方法。之后,您可以使用getTaskCounter()和findCounter()方法分别为每个任务找到所需的计数器。

例如,如何获取地图gc-time-millis计数器:

Long result = 0L;    
TaskReport[] taskReports = job.getHadoopJob().getTaskReports(TaskType.MAP);
for (TaskReport taskReport : taskReports) {
   try {
       result += taskReport.getTaskCounters().findCounter(TaskCounter.GC_TIME_MILLIS).getValue();
       } catch (Exception ignored) {}
}
相关问题