Come sono organizzati i dati intermedi in MapReduce?

4

Da quanto ho capito, ogni mappatore emette un file intermedio. I dati intermedi (i dati contenuti in ciascun file intermedio) vengono quindi ordinati per chiave.

Quindi a un riduttore viene assegnata una chiave dal master. Il riduttore legge dal file intermedio contenente la chiave e quindi le chiamate riducono utilizzando i dati letti.

Ma in dettaglio, come sono organizzati i dati intermedi? Un dato corrispondente a un tasto può essere contenuto in più file intermedi? Cosa succede quando ci sono troppi dati corrispondenti a un tasto che devono essere trattenuti da un singolo file?

In breve, in che modo le partizioni intermedie differiscono dai file intermedi e in che modo vengono affrontate queste differenze nell'implementazione?

    
posta Pedro Cattori 06.02.2014 - 05:12
fonte

2 risposte

1

Potresti aver perso un passaggio. MapReduce funziona così:

Map -> Shuffle -> Sort -> Reduce

Maggiori dettagli su come Shuffle & Operazione di ordinamento: link

But in detail, how is the intermediate data organized?

È solo l'output del mapper. La riproduzione casuale e l'ordinamento sono un passaggio separato.

Can a data corresponding to a key be held in multiple intermediate files?

Sì, ma a ciascun riduttore è garantito il recupero di tutti i dati corrispondenti a una chiave a causa del passaggio di ordinamento, anche se diversi mappatori possono produrre dati corrispondenti a una chiave.

What happens when there is too much data corresponding to one key to be held by a single file?

In realtà non conterebbe troppo. Ogni mappatore ottiene un sottoinsieme limitato di input e l'output corrisponderà in dimensione all'input per tutti i mapper.

    
risposta data 06.06.2014 - 23:29
fonte
0

Puoi controllare i dettagli su varie fonti su Hadoop, ma dal momento che hai chiesto qui. Penso che tu voglia avere un riassunto. Vorrei riassumere le risposte alle tue due domande come segue:

  1. Come sono organizzati i dati intermedi? Esistono 2 tipi di dati intermedi, dati intermedi sul mappatore e dati intermedi sul riduttore. I dati intermedi sul mappatore sono la mappa dalla chiave al valore. I dati intermedi sul riduttore sono TUTTI i valori di determinati set di chiavi, partizionati dalla chiave. Se vuoi ancora più dettagli di questo, allora va nell'organizzazione del file system, piuttosto che ti reindirizzerei per leggere il codice sorgente di Hadoop. Non sono sicuro che tu debba saperlo, potresti, ma io non sono te, quindi non conosco il tuo bisogno.

  2. Cosa succede quando ci sono troppi dati su un tasto che deve essere contenuto da un singolo file? Poi li tieni in più file MA quando chiami il riduttore su una certa chiave, devi essere in grado di accedere a tutti (tutti i valori di qualsiasi tasto)

Speriamo, non mi manca niente qui. Se lo faccio, sarebbe molto contento di essere corretto.

    
risposta data 07.06.2014 - 09:08
fonte

Leggi altre domande sui tag