各マッパー タスクとリデューサー タスクでそれぞれセットアップ メソッドとクリーンアップ メソッドが呼び出されますか? それとも、全体的なマッパーおよびリデューサー ジョブの開始時に 1 回だけ呼び出されますか?
質問する
32436 次
5 に答える
25
これらはタスクごとに呼び出されるため、20 個のマッパーを実行している場合、セットアップ / クリーンアップはそれぞれに対して呼び出されます。
1 つの落とし穴は、Mapper と Reducer の両方の標準の run メソッドが map/reduce メソッドの周りの例外をキャッチしないことです。したがって、これらのメソッドで例外がスローされた場合、クリーンアップ メソッドは呼び出されません。
2020 編集: コメントに記載されているように、2012 (Hadoop 0.20) からのこのステートメントはもはや当てはまりません。クリーンアップは finally ブロックの一部として呼び出されます。
于 2012-06-05T01:01:29.580 に答える
4
Mapper タスクまたは Reducer タスクごとに呼び出されます。これがHadoopコードです。
public void run(Context context) throws IOException, InterruptedException {
setup(context);
try {
while (context.nextKey()) {
reduce(context.getCurrentKey(), context.getValues(), context);
}
} finally {
cleanup(context);
}
}
于 2014-02-15T14:59:12.953 に答える
2
mapreduce のドキュメントによると、 Mapper および Reducer タスクごとに setup と cleanup が呼び出されます。
于 2015-03-19T07:47:32.867 に答える
1
レデューサーでは、ジョブで job.setNumReduceTasks(1); を実行できます。そうすれば、レデューサーのセットアップとクリーンアップは一度だけ実行されます。
于 2015-09-21T23:22:30.957 に答える