MapReduce - Introduzione

MapReduce è un modello di programmazione per la scrittura di applicazioni in grado di elaborare Big Data in parallelo su più nodi. MapReduce fornisce capacità analitiche per analizzare enormi volumi di dati complessi.

Cosa sono i Big Data?

I Big Data sono una raccolta di grandi set di dati che non possono essere elaborati utilizzando le tecniche di elaborazione tradizionali. Ad esempio, il volume di dati richiesto da Facebook o Youtube per raccogliere e gestire quotidianamente, può rientrare nella categoria dei Big Data. Tuttavia, i Big Data non riguardano solo la scala e il volume, ma coinvolgono anche uno o più dei seguenti aspetti: velocità, varietà, volume e complessità.

Perché MapReduce?

I sistemi aziendali tradizionali normalmente dispongono di un server centralizzato per archiviare ed elaborare i dati. La figura seguente mostra una vista schematica di un sistema aziendale tradizionale. Il modello tradizionale non è certamente adatto per elaborare enormi volumi di dati scalabili e non può essere gestito da server di database standard. Inoltre, il sistema centralizzato crea un collo di bottiglia eccessivo durante l'elaborazione simultanea di più file.

Google ha risolto questo problema del collo di bottiglia utilizzando un algoritmo chiamato MapReduce. MapReduce divide un'attività in piccole parti e le assegna a molti computer. Successivamente, i risultati vengono raccolti in un unico punto e integrati per formare il set di dati dei risultati.

Come funziona MapReduce?

L'algoritmo MapReduce contiene due attività importanti, ovvero Map e Reduce.

  • L'attività Mappa prende un insieme di dati e lo converte in un altro insieme di dati, dove i singoli elementi vengono suddivisi in tuple (coppie chiave-valore).

  • L'attività Riduci prende l'output dalla mappa come input e combina tali tuple di dati (coppie chiave-valore) in un insieme più piccolo di tuple.

L'attività di riduzione viene sempre eseguita dopo il lavoro di mappa.

Esaminiamo ora da vicino ciascuna delle fasi e cerchiamo di comprenderne il significato.

  • Input Phase - Qui abbiamo un lettore di record che traduce ogni record in un file di input e invia i dati analizzati al mappatore sotto forma di coppie chiave-valore.

  • Map - Map è una funzione definita dall'utente, che accetta una serie di coppie chiave-valore ed elabora ciascuna di esse per generare zero o più coppie chiave-valore.

  • Intermediate Keys - Le coppie chiave-valore generate dal mappatore sono note come chiavi intermedie.

  • Combiner- Un combinatore è un tipo di riduttore locale che raggruppa dati simili dalla fase della mappa in insiemi identificabili. Prende le chiavi intermedie dal mappatore come input e applica un codice definito dall'utente per aggregare i valori in un piccolo ambito di un mappatore. Non fa parte dell'algoritmo principale di MapReduce; è opzionale.

  • Shuffle and Sort- L'attività Reducer inizia con il passaggio Shuffle and Sort. Scarica le coppie chiave-valore raggruppate sul computer locale, dove è in esecuzione Reducer. Le singole coppie chiave-valore vengono ordinate per chiave in un elenco di dati più ampio. L'elenco dei dati raggruppa le chiavi equivalenti in modo che i loro valori possano essere ripetuti facilmente nell'attività Riduttore.

  • Reducer- Il riduttore prende i dati accoppiati valore-chiave raggruppati come input ed esegue una funzione riduttore su ciascuno di essi. Qui, i dati possono essere aggregati, filtrati e combinati in diversi modi e richiede un'ampia gamma di elaborazione. Al termine dell'esecuzione, vengono assegnate zero o più coppie chiave-valore al passaggio finale.

  • Output Phase - Nella fase di output, abbiamo un formattatore di output che traduce le coppie chiave-valore finali dalla funzione Reducer e le scrive su un file utilizzando un masterizzatore di record.

Cerchiamo di capire le due attività Map & f Reduce con l'aiuto di un piccolo diagramma -

MapReduce-Example

Prendiamo un esempio del mondo reale per comprendere la potenza di MapReduce. Twitter riceve circa 500 milioni di tweet al giorno, ovvero quasi 3000 tweet al secondo. La figura seguente mostra come Tweeter gestisce i suoi tweet con l'aiuto di MapReduce.

Come mostrato nell'illustrazione, l'algoritmo MapReduce esegue le seguenti azioni:

  • Tokenize - Tokenizza i tweet in mappe di token e li scrive come coppie chiave-valore.

  • Filter - Filtra le parole indesiderate dalle mappe dei token e scrive le mappe filtrate come coppie chiave-valore.

  • Count - Genera un contatore di gettoni per parola.

  • Aggregate Counters - Prepara un aggregato di valori di contatore simili in piccole unità gestibili.