我在hadoop集群上运行mapreduce作业。我在浏览器中看到的作业运行时间:8088和master:19888(作业历史服务器Web UI)如下所示:
主:8088
主:19888
我有两个问题:
答案 0 :(得分:0)
这是部分答案,仅适用于问题1!
我看到"已提交"和"开始"第二张图片中的8秒,而时间"开始"在第一张图片中等于"已提交"第二次的时间。我想这涵盖了你所看到的8秒差异" Elapsed"时间。
我对第二个问题也很好奇,但这也不是巧合,也是8秒。
答案 1 :(得分:0)
看起来Average Reduce Time
基于先前任务(shuffle / merge)完成的时间,而不一定是reduce实际运行所花费的时间。
查看此source code,您可以看到第300行附近发生的相关计算。
if (attempt.getState() == TaskAttemptState.SUCCEEDED) {
numReduces++;
avgShuffleTime += (attempt.getShuffleFinishTime() - attempt.getLaunchTime());
avgMergeTime += attempt.getSortFinishTime() - attempt.getShuffleFinishTime();
avgReduceTime += (attempt.getFinishTime() - attempt.getSortFinishTime());
}
其次是:
if (numReduces > 0) {
avgReduceTime = avgReduceTime / numReduces;
avgShuffleTime = avgShuffleTime / numReduces;
avgMergeTime = avgMergeTime / numReduces;
}
看看你的数字,它们似乎与计算运行时间(一切都转换为秒)的方法一致:
Total Pre-reduce time = Map Run Time + Ave Shuffle + Ave Merge
143 = 43 + 83 + 17
Ave Reduce Time = Elapsed Time - Total Pre-reduce
-10 = 133 - 143
因此,看看Map
,Shuffle
和Merge
与Elapsed
相比有多长时间,我们最终会得到一个接近-8
的负数