很抱歉,我不太理解Map-Reduce作业的计时结果。例如,我正在运行的一个作业在作业跟踪器中给出以下结果:
完成时间:1分39秒
CPU时间消耗(毫秒)150,460 152,030 302,490
CPU时间消耗(毫秒)中的条目分别为Map、Reduce和总体。但是,“CPU时间消耗”是如何衡量的?它表示什么意思?这是分配给作业的每个Mapper和Reducer中累计花费的总时间吗?是否可以从框架中测量其他时间,例如shuffle、sort、partition等的时间?如果可以,如何测量?
第二个困扰我的问题。我看到这里的一些帖子(链接1,链接2),建议在驱动程序类中使用getTime():
long start = new Date().getTime();
boolean status = job.waitForCompletion(true);
long end = new Date().getTime();
System.out.println("Job took "+(end-start) + "milliseconds");
这不是Job Tracker输出中第一个条目提供的吗?这个是否必要?当我想计算IO时间、每个节点/每个阶段的计算时间时,最好的计时Hadoop作业的方式是什么?