2012-06-04 10 views

答えて

20

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

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

+4

map/reduceの例外のcatch節で、常にクリーンアップメソッドを呼び出すことができます。しかし、これには可能な例外のインテリジェントな解析が必要で、catch/catch節をキャッチする必要があります。 – abhinavkulkarni

4

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

2

これは、MapperタスクまたはReducerタスクと呼ばれます。 ここにhadoopコードがあります。 mapreduce documentation セットアップとクリーンアップによると

public void run(Context context) throws IOException, InterruptedException { 
    setup(context); 
    try { 
     while (context.nextKey()) { 
     reduce(context.getCurrentKey(), context.getValues(), context); 
     } 
    } finally { 
     cleanup(context); 
    } 
    } 
1

は、各マッパーとリデューサーのタスクのために呼ばれています。

1

あなたは仕事をすることができますあなたはjob.setNumReduceTasks(1)を行うことができます。そのようにしてレデューサーのセットアップとクリーンアップが一度だけ実行されます。

関連する問題