在hadoopui中,我们可以在单独的列中看到标准mr计数器:map task、reduce task和total。但是我在hadoopjavaapi中没有看到这样的方法。我们如何从javaapi中获得独立的计数器,例如如何获得map和reduce列的cpu时间(ms)值?
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) {} }
1条答案
按热度按时间798qvoo81#
如果您想获得分离的任务计数器,则需要对hadoop作业使用gettaskreports()方法。之后,可以使用gettaskcounter()和findcounter()方法分别为每个任务查找所需的计数器。
例如,如何获取Mapgc时间毫秒计数器: