mapreduceIniziare con mapreduce


Osservazioni

Questa sezione fornisce una panoramica di cosa sia mapreduce e del perché uno sviluppatore potrebbe volerlo utilizzare.

Dovrebbe anche menzionare eventuali soggetti di grandi dimensioni all'interno di mapreduce e collegarsi agli argomenti correlati. Poiché la Documentazione per mapreduce è nuova, potrebbe essere necessario creare versioni iniziali di tali argomenti correlati.

Installazione o configurazione

Mapreduce è una parte di Hadoop. Quindi, quando Apache Hadoop (o qualsiasi distribuzione di Hadoop è installata) MR viene installato automaticamente.

MapReduce è il framework di elaborazione dati su HDFS (file system distribuito Hadoop). Lavori MR possono essere scritti usando Java, python, Scala, R, ecc.

Cosa fa la mapreduce e come?

Mapreduce è un modello di programmazione per l'elaborazione su (molto) grandi quantità di dati.

Il tradizionale 'HPC' (High Performance Computing) accelera calcoli di grandi dimensioni su quantità relativamente grandi di dati creando un insieme di computer altamente connessi (utilizzando cose come networking estremamente rapido e accesso rapido all'archiviazione condivisa, memoria condivisa) per gestire problemi di calcolo che di solito richiedono calcoli per avere accesso ai reciproci dati. Un classico esempio è la previsione del tempo.

D'altro canto, Mapreduce eccelle nel gestire calcoli relativamente piccoli e indipendenti su enormi quantità di dati. Per rendere ciò possibile, i dati sono distribuiti su molti computer (a causa della quantità di dati) e il calcolo desiderato viene suddiviso in una fase che può essere eseguita indipendentemente su ciascun bit di dati (la fase "mappa"). I risultati di questi calcoli indipendenti vengono quindi raccolti e una seconda parte di calcoli viene eseguita per combinare tutti questi risultati individuali nel risultato finale (la fase di 'riduzione').


Esempio: conteggio voti

Immagina di avere una grande quantità di voti da contare, e c'è un po 'di lavoro per contare ogni voto (es. Scoprendo dall'immagine scansionata quale casella è stata selezionata).

In questo caso, un'implementazione di mapreduce:

Passaggio 1: "Diffusione"

Distribuire le immagini da elaborare sui computer disponibili.

Passaggio 2: "Mappa"

Su ciascun computer, per ogni immagine:

  • prendere 1 delle immagini copiate su questo computer come input
  • scopri quale casella è stata selezionata
  • mostra il numero (o il codice o il nome) dell'articolo votato

Nota che il lavoro può iniziare non appena un computer riceve 1 immagine su cui lavorare. Non è necessario che tutti questi computer interagiscano per svolgere il proprio lavoro, quindi non è necessario che siano interconnessi rapidamente, abbiano memoria condivisa o spazio su disco condiviso.

Passaggio 3: "Raccogli"

Raccogli tutte queste uscite su 1 computer.

Passaggio 4: "Riduci"

Conta quanti voti per ogni numero (o codice o nome) ci sono.

Questo esempio di base evidenzia anche come sono possibili ulteriori ottimizzazioni. In questo caso, il passo di riduzione stesso può essere chiaramente eseguito parzialmente su ciascun computer, quindi una riduzione finale può essere eseguita su un computer centrale. Ciò ridurrà sia la quantità di lavoro su un computer che esegue il passaggio di riduzione, sia la quantità di dati che devono essere trasportati sulla rete.


Esempio: conteggio dei voti - ottimizzato (usando il combinatore)

Passaggio 1: "Diffusione"

Come prima: diffondere le immagini da elaborare sui computer disponibili.

Passaggio 2: "Mappa"

Come prima: su ogni computer, per ogni immagine:

  • prendere 1 delle immagini copiate su questo computer come input
  • scopri quale casella è stata selezionata
  • mostra il numero (o il codice o il nome) dell'articolo votato

Passaggio 3: "Raccogli" localmente

Raccogli tutte le uscite di 1 computer sul computer stesso.

Passaggio 4: "Riduci" localmente

Conta quanti voti di ogni numero (o codice o nome) ci sono nei risultati locali e produci questi conteggi.

Passaggio 5: "Raccogli" a livello globale

Raccogliere tutte le uscite del locale si riduce su 1 computer.

Passaggio 6: "Riduci" a livello globale

Riassumi i conteggi di voti di ciascun numero (o codice o nome) creati localmente.


Si noti che nel passaggio 3 non è necessario attendere tutti i risultati in uno dei seguenti casi:

  • se questo diventa troppo per i computer risorse locali come memoria / memoria
  • se il costo del lavoro da rifare quando un computer si rompe è ritenuto in grande attesa per tutti i risultati locali
  • se la rete è ora libera di trasportare risultati intermedi

la raccolta locale e la riduzione locale possono essere effettuate sui risultati prodotti finora sul computer locale, e ciò può essere fatto in qualsiasi momento.

Il passo locale di riduzione è chiamato il passo del combinatore. Questo è un passaggio facoltativo utilizzato per migliorare le prestazioni.