web-dev-qa-db-ja.com

Hadoop MapReduceでのMapper / Reducerのセットアップおよびクリーンアップメソッド

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

20
kee

それらはタスクごとに呼び出されるため、20個のマッパーを実行している場合は、それぞれに対してセットアップ/クリーンアップが呼び出されます。

1つの問題は、MapperとReducerの両方の標準のrunメソッドがmap/reduceメソッドの周りの例外をキャッチしないことです。したがって、これらのメソッドで例外がスローされた場合、クリーンアップメソッドは呼び出されません。

21
Chris White

1つの説明が役立ちます。 setup/cleanupメソッドは、タスクレベルでの初期化とクリーンアップに使用されます。タスク内では、最初にsetup()メソッドへの1回の呼び出しで初期化が行われ、次にmap()[またはreduce()]関数へのすべての呼び出しが行われます。その後、タスクを終了する前に、cleanup()メソッドをもう一度呼び出します。

5
user3163904

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);
    }
  }
3
KaiZhao

mapreduceドキュメント によると、各MapperタスクとReducerタスクに対してセットアップとクリーンアップが呼び出されます。

1
Dheeraj Verma

減速機では、ジョブで実行できますjob.setNumReduceTasks(1);このようにして、レデューサーのセットアップとクリーンアップは1回だけ実行されます。

1
Astronaut