如何从hadoopjavaapi获取特定的mr计数器?

xhv8bpkk  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(363)

在hadoopui中,我们可以在单独的列中看到标准mr计数器:map task、reduce task和total。

但是我在hadoopjavaapi中没有看到这样的方法。我们如何从javaapi中获得独立的计数器,例如如何获得map和reduce列的cpu时间(ms)值?

798qvoo8

798qvoo81#

如果您想获得分离的任务计数器,则需要对hadoop作业使用gettaskreports()方法。之后,可以使用gettaskcounter()和findcounter()方法分别为每个任务查找所需的计数器。
例如,如何获取Mapgc时间毫秒计数器:

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) {}
}

相关问题