2012-06-04 16 views

risposta

20

Vengono chiamati per ogni attività, quindi se si hanno 20 mapper in esecuzione, verrà richiamata l'installazione/pulizia per ognuno.

Un getcha è il metodo di esecuzione standard per entrambi i Mapper e Reducer non cattura eccezioni intorno alla mappa/riduce i metodi - quindi se viene lanciata un'eccezione in questi metodi, il metodo di pulizia non verrà chiamato.

+4

Si può sempre chiamare il metodo di pulizia nella clausola catch di un'eccezione in map/reduce. Tuttavia, ciò richiede un'analisi intelligente delle possibili eccezioni e l'inserimento di clausole 'try/catch' per catturarle. – abhinavkulkarni

4

Un chiarimento è utile. I metodi di installazione/pulitura vengono utilizzati per l'inizializzazione e la pulizia a livello di attività. All'interno di un'attività, la prima inizializzazione avviene con una singola chiamata al metodo setup() e quindi tutte le chiamate alla funzione map() [o reduce()] verranno eseguite. Successivamente verrà eseguita un'altra chiamata al metodo cleanup() prima di uscire dall'attività.

2

Si chiama per attività Mapper o attività Riduttore. Ecco il codice 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

Secondo l'impostazione mapreduce documentation e la pulizia sono chiamati per ogni Mapper e le attività del riduttore.

1

sul riduttore è possibile sul lavoro do job.setNumReduceTasks (1); e in questo modo la configurazione e la pulizia del riduttore verranno eseguite una sola volta.

Problemi correlati