恐怕我不明白 Map-Reduce 作业的计时结果。例如,我正在运行的作业从作业跟踪器中为我提供了以下结果。
完成时间:1 分 39 秒
花费的 CPU 时间(毫秒) 150,460 152,030 302,490
CPU 时间 (ms) 中的条目分别用于 Map、Reduce 和 Total。但是,那么如何衡量“花费的 CPU 时间”以及它意味着什么?这是分配给作业的每个映射器和缩减器所花费的总累积时间吗?是否可以从框架中测量其他时间,例如随机播放、排序、分区等时间?如果是这样,怎么做?
困扰我的第二个问题。我在这里看到了一些帖子(Link1,Link2),建议在驱动程序类中使用 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 输出中的第一个条目提供的内容吗?这是必要的吗?为 hadoop 作业计时的最佳方法是什么,尤其是当我想计时 IO 时间、计算每个节点/每个阶段的时间时?