2013-06-01 16 views
7

Ora ho un lavoro MapReduce 4 fasi come segue:concatenamento Multi-Riduttori in un lavoro Hadoop MapReduce

Input-> Map1 -> Reduce1 -> Reducer2 -> Reduce3 -> Reduce4 -> Output 

mi accorgo che c'è ChainMapper classe in Hadoop che può catena vari mapper in un unico grande mapper, e salvare il costo I/O del disco tra le fasi della mappa. Esiste anche una classe ChainReducer, tuttavia non è un vero "riduttore di catena". Può supportare solo lavori come:

[Map+/ Reduce Map*] 

so di poter impostare quattro posti di lavoro MR per il mio compito, e mapper utilizzo di default per gli ultimi tre posti di lavoro. Ma costerà un sacco di I/O su disco, poiché i riduttori dovrebbero scrivere il risultato su disco per consentire al seguente mappatore di accedervi. C'è qualche altra caratteristica integrata di Hadoop per mettere in catena i miei riduttori per ridurre il costo di I/O?

Sto usando Hadoop 1.0.4.

+0

Anche io sarei molto interessato a questo, se è possibile. –

risposta

2

Non penso che si possa avere l'o/p di un riduttore dato a un altro riduttore direttamente. Sarei andato per questo:

Input-> Map1 -> Reduce1 -> 
     Identity mapper -> Reducer2 -> 
       Identity mapper -> Reduce3 -> 
         Identity mapper -> Reduce4 -> Output 

In Hadoop serie 2.X, internamente è possibile mapper catena prima di riduttore con ChainMapper e Mappers catena dopo riduttore con ChainReducer.

+0

Cosa intendi con o/p? – Adelin

+1

@Adio significa uscita. –

Problemi correlati