1

一开始我没有看到设置 MapReduce 作业的计数器值的简单方法?map/reduce 任务之间的计数器增量原子操作也是?

4

2 回答 2

2

不确定在开始时设置计数器值是什么意思 - 你的意思是将计数器值初始化为 0 以外的值(你这样做的用例是什么?)。

至于原子操作,计数器是为每个任务单独累积的。当任务完成时,计数器值被提交到全局总数中(只有提交的任务被提交,所以如果你有两个任务在推测运行,只有成功的任务计数器被提交。

于 2012-05-11T02:38:48.790 回答
1

在创建计数器时设置值,例如:

  private AtomicInteger pages = new AtomicInteger(0);  // total pages fetched

或者incrCounter(),如果您想稍后再做,请在循环中使用方法。(第一个更好。)

计数器由与其关联的任务维护,并定期发送到 tasktracker,然后发送到 jobtracker,因此它们可以全局聚合。所以每个 map 任务/reduce 任务都有自己的 counter 变量副本。如果作业成功,则计算所有计数器的总数并在输出摘要中提供。

于 2012-05-11T03:32:51.553 回答