最初に MapReduce ジョブのカウンター値を設定する簡単な方法がわかりませんか? また、マップ/リデュースタスク間のカウンターインクリメントアトミック操作ですか?
質問する
1309 次
2 に答える
2
最初にカウンター値を設定することの意味がわからない-カウンター値を0以外で初期化することを意味します(これを行うためのユースケースは何ですか?)。
アトミック操作に関しては、カウンターはタスクごとに分離して蓄積されます。タスクが完了すると、カウンター値がグローバル合計にコミットされます (コミットされたタスクのみがコミットされるため、投機的に実行されている 2 つのタスクがある場合、成功したタスク カウンターのみがコミットされます。
于 2012-05-11T02:38:48.790 に答える
1
次のようにカウンターを作成するときに値を設定します。
private AtomicInteger pages = new AtomicInteger(0); // total pages fetched
またはincrCounter()
、後で実行したい場合は、ループでメソッドを使用します。(最初の方が良いです。)
カウンターは、関連付けられているタスクによって維持され、定期的に tasktracker に送信されてから jobtracker に送信されるため、グローバルに集計できます。したがって、各 map タスク / reduce タスクには、カウンター変数の独自のコピーがあります。ジョブが成功すると、すべてのカウンターの合計が作成され、出力サマリーに表示されます。
于 2012-05-11T03:32:51.553 に答える