Hadoop 2.6.0 JobCounters总是返回零

时间:2015-04-06 13:08:19

标签: java hadoop mapreduce

我正在尝试获取地图阶段和作业运行中的减少阶段所花费的总时间。所以我尝试使用 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());

更新:   似乎我只能在运行纱线时打印这些计数器。任何想法如何在不运行纱线的情况下获得它们?

感谢您的关注!

0 个答案:

没有答案