21

各マッパー タスクとリデューサー タスクでそれぞれセットアップ メソッドとクリーンアップ メソッドが呼び出されますか? それとも、全体的なマッパーおよびリデューサー ジョブの開始時に 1 回だけ呼び出されますか?

4

5 に答える 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 に答える