为什么有时mapreduce Average Reduce Time 是负数?
Why sometimes the mapreduce Average Reduce Time is a negative number?
我 运行 hadoop 集群上的 mapreduce 作业。我在master:8088和master:19888(job history server web UI)浏览器中看到的job的运行ning时间如下:
master:8088
master:19888
我有两个问题:
- 为什么两张图片的经过时间不同?
- 为什么有时平均减少时间是负数?
这是部分答案,仅针对问题 1!
我在第二张图片中看到 "Submitted" 和 "Started" 相差 8 秒,而第一张图片中的时间 "Started" 等于 "Submitted"秒的时间。我想这涵盖了您认为 "Elapsed" 时间的 8 秒差异。
第二个问题我也很好奇,不过也不是巧合,也是8秒
看起来 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
相比花费了多长时间,我们最终得到一个接近于 [=21] 的负数=].
我 运行 hadoop 集群上的 mapreduce 作业。我在master:8088和master:19888(job history server web UI)浏览器中看到的job的运行ning时间如下:
master:8088
master:19888
我有两个问题:
- 为什么两张图片的经过时间不同?
- 为什么有时平均减少时间是负数?
这是部分答案,仅针对问题 1!
我在第二张图片中看到 "Submitted" 和 "Started" 相差 8 秒,而第一张图片中的时间 "Started" 等于 "Submitted"秒的时间。我想这涵盖了您认为 "Elapsed" 时间的 8 秒差异。
第二个问题我也很好奇,不过也不是巧合,也是8秒
看起来 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
相比花费了多长时间,我们最终得到一个接近于 [=21] 的负数=].