我正在尝试获取地图阶段和作业运行中的减少阶段所花费的总时间。所以我尝试使用 JobCounters MILLIS_MAPS 和 MILLI_REDUCES ,但似乎当我尝试获取值时,这些值始终为零。除此之外,我还注意到,当作业成功完成时,这些计数器不会打印出来,这导致了我的问题。
JobCounters在Hadoop 2.6.0中使用?他们被弃用了吗?
如果没有,我们如何正确使用它们?
这是我到目前为止所尝试的:
Date startTime = new Date();
System.out.println("Job started: " + startTime);
job.waitForCompletion(true);
Date end_time = new Date();
System.out.println("Job ended: " + end_time);
System.out.println("The job took " +
(end_time.getTime() - startTime.getTime()) /1000 + " seconds.");
Counters counters = job.getCounters();
Counter mapTime = counters.findCounter(JobCounter.MILLIS_MAPS);
System.out.println(mapTime.getDisplayName() + " : " + mapTime.getValue());
Counter reduceTime = counters.findCounter(JobCounter.MILLIS_REDUCES);
System.out.println(reduceTime.getDisplayName() + " : " +reduceTime.getValue());
更新: 似乎我只能在运行纱线时打印这些计数器。任何想法如何在不运行纱线的情况下获得它们?
感谢您的关注!