我想知道在Hadoop MapReduce中运行作业时如何计算map-stage和reduce stage-progress。
我进入JobClient.java搜索线索,我认为JobStatus.java存储了所有这些信息,但我无法找到如何计算/更新百分比。
答案 0 :(得分:1)
来自org.apache.hadoop.mapred.JobInProgress#updateTaskStatus
:
double progressDelta = tip.getProgress() - oldProgress;
if (tip.isMapTask()) {
this.status.setMapProgress((float) (this.status.mapProgress() +
progressDelta / maps.length));
} else {
this.status.setReduceProgress((float) (this.status.reduceProgress() +
(progressDelta / reduces.length)));
}
基本上,它是所有任务的平均进度。
答案 1 :(得分:0)
查找此文件
检查功能,显示%状态。你需要检查mapProgress和reduceProgress
public boolean monitorAndPrintJob
.....
while (!job.isComplete()) {
Thread.sleep(1000);
String report = (" map "
+ StringUtils.formatPercent(job.mapProgress(), 0)
+ " reduce " + StringUtils.formatPercent(job
.reduceProgress(), 0));
if (!report.equals(lastReport)) {
LOG.info(report);
lastReport = report;
}
然后你需要从中查找updateTaskStatus方法 的 org.apache.hadoop.mapred.JobInProgress 强>