2012-06-04 12 views

Odpowiedz

20

Są one wywoływane dla każdego zadania, więc jeśli masz 20 programistów, uruchomione zostanie ustawienie/czyszczenie dla każdego z nich.

Jedna gotcha jest standardową metodą uruchamiania zarówno Mapper, jak i Reducer nie przechwytuje wyjątków w obrębie metody map/reduce - tak więc w przypadku wyrzucenia wyjątku w tych metodach metoda czyszczenia nie zostanie wywołana.

+4

Zawsze można wywołać metodę czyszczenia w klauzuli catch wyjątku na mapie/zmniejsz. Wymaga to jednak inteligentnej analizy możliwych wyjątków i umieszczenia w nich klauzul "próbuj/złap", aby je złapać. – abhinavkulkarni

4

Jedno wyjaśnienie jest pomocne. Metody instalacji/czyszczenia są używane do inicjowania i czyszczenia na poziomie zadań. W ramach zadania pierwsza inicjalizacja odbywa się za pomocą pojedynczego wywołania metody setup(), a następnie zostaną wykonane wszystkie wywołania funkcji map() [lub zmniejszenia()]. Następnie kolejne wywołanie metody cleanup() zostanie zakończone przed zakończeniem zadania.

2

Nazywa się to zadaniem Zendera lub zadaniem Reduktora. Oto kod hadoop.

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

na reduktorze, który można wykonać w pracy, wykonaj zadanie job.setNumReduceTasks (1); w ten sposób ustawienie i oczyszczanie reduktora zostanie uruchomione tylko raz.

Powiązane problemy