在 Hadoop 1.0.1 中,如何使用 API 找到 reduce 任务中每个阶段的权重?
更明确地说,我试图查看改组阶段、排序阶段和合并阶段占用了多少减少任务。
我认为实现这一点的一种方法可能是监控任务所花费的总时间以及 Shuffle 和 Sort 阶段所花费的时间。您可以使用TaskStatus类提供的以下方法来查找:
getStartTime():获取任务的开始时间。
getFinishTime():获取任务完成时间。如果之前未设置 shuffleFinishTime 和 sortFinishTime,则将它们设置为 finishTime。它负责处理在心跳间隔内完成 shuffle、sort 和 finish 并且不单独报告的情况。如果任务状态为 TaskStatus.FAILED,则完成时间表示任务失败的时间。
getShuffleFinishTime():获取任务的随机播放完成时间。如果由于 shuffle/sort/finish 阶段在相同的心跳间隔内结束而未设置 shuffle 完成时间,则将其设置为下一个阶段的完成时间,即在设置时排序或任务完成。
getSortFinishTime():获取任务的排序完成时间。如果由于排序和减少阶段在同一heartebat间隔内完成而未设置排序完成时间,则在设置完成时间时将其设置为完成时间。
另一种方法可能是使用Counters
.
如果这回答了您的问题,请告诉我。谢谢你。