Apache MapReduce

Un paradigma di programmazione che permette una scalabilità massiccia di dati non strutturati su centinaia o migliaia di server di commodity in un cluster Apache Hadoop

Orange and blue technology background circuit board and code. 3d Illustration

Cos'è MapReduce?

MapReduce è un paradigma di programmazione che permette una scalabilità massiccia su centinaia o migliaia di server in un cluster Hadoop. Come componente di elaborazione, MapReduce è il cuore di Apache Hadoop. Il termine "MapReduce" si riferisce a due compiti separati e distinti che i programmi Hadoop eseguono. Il primo è il lavoro di mappatura, che consiste nel prendere un insieme di dati e convertirlo in un altro insieme di dati, dove i singoli elementi sono raggruppati in tuple (coppie chiave/valore).

Il processo di riduzione utilizza l'output di una mappa come input e combina quelle tuple di dati in un insieme di tuple più piccolo. Come suggerisce il nome stesso MapReduce, il lavoro di riduzione viene sempre eseguito dopo il lavoro di mappatura.

La programmazione MapReduce offre diversi vantaggi per aiutarti a ottenere informazioni preziose dai tuoi big data:

  • Scalabilità. Le aziende possono elaborare petabyte di dati memorizzati nell'Hadoop Distributed File System (HDFS).
  • Flessibilità. Hadoop rende più facile l'accesso a più fonti di dati e a più tipi di dati.
  • Velocità. Grazie all'elaborazione parallela e al ridotto trasferimento di dati, Hadoop consente di processare velocemente quantità massicce di dati.
  • Semplicità. Gli sviluppatori possono scrivere codice in diversi linguaggi, tra cui Java, C++ e Python.

Un esempio di MapReduce

Questo è un esempio molto semplice di MapReduce. Non ha importanza la quantità di dati da analizzare, i principi chiave rimangono gli stessi.

Supponiamo di avere cinque file, ognuno contenente due colonne (una chiave e un valore in termini Hadoop) che rappresentano una città e la temperatura corrispondente registrata in quella città per i vari giorni di misurazione. La città è la chiave e la temperatura è il valore. Per esempio: (Toronto, 20). Tra tutti i dati raccolti e in tutti i file di dati, vuoi trovare, per ogni città, la temperatura massima registrata (da notare che in ogni file la stessa città potrebbe essere presente più volte).

Usando il framework MapReduce, è possibile suddividere questo in cinque operazioni di mappatura, dove ogni mapper lavora su uno dei cinque file. Il task di mappatura esamina i dati e restituisce la temperatura massima per ogni città.

Ad esempio, i risultati prodotti da un task di mappatura per i dati di cui sopra potrebbe avere un aspetto simile a questo: (Toronto, 20) (Whitby, 25) (New York, 22) (Rome, 33)

Supponiamo che gli altri quattro task di mappatura (che lavorano sugli altri quattro file che non sono mostrati qui) abbiano prodotto i seguenti risultati intermedi:

(Toronto, 18) (Whitby, 27) (New York, 32) (Roma, 37) (Toronto, 32) (Whitby, 20) (New York, 33) (Roma, 38) (Toronto, 22) (Whitby, 19) (New York, 20) (Roma, 31) (Toronto, 31) (Whitby, 22) (New York, 19) (Roma, 30)

Tutti e cinque questi flussi di output verrebbero inseriti nei task di riduzione, che combinano i risultati di input e producono un singolo valore per ogni città, producendo il seguente set di risultati finale: (Toronto, 32) (Whitby, 27) (New York, 33) (Roma, 38).

Coma analogia, puoi immaginare che i task di mappatura e riduzione funzionino allo stesso modo in cui veniva condotto un censimento ai tempi dei romani, dove l'ufficio del censimento inviava le sue persone in ogni città dell'impero. Ogni addetto al censimento in ogni città sarebbe stato incaricato di contare il numero di persone in quella città e poi riportare i risultati alla capitale. Qui i risultati di ogni città sarebbero stati riuniti in un unico risultato (somma di tutte le città) per determinare la popolazione complessiva dell'impero. Questo processo di associazione delle persone alle città (mappatura), in parallelo, e poi la combinazione dei risultati (riduzione) è molto più efficiente che mandare una sola persona a contare ogni abitante dell'impero in maniera seriale.


Soluzioni correlate

Conduci analisi migliori e più veloci con le soluzioni di big data di IBM e Cloudera

IBM e Cloudera si sono unite per offrire una distribuzione Hadoop leader del settore di livello enterprise, includendo un ecosistema integrato di prodotti e servizi in modo da supportare analisi più veloci su larga scala.


Apache Hadoop

Sfrutta la potenza dei big data usando una piattaforma di programmazione e di archiviazione open source e fortemente scalabile. IBM offre soluzioni e servizi compatibili con Hadoop per aiutarti ad attingere a tutti i tipi di dati, potenziando gli insight e migliorando le decisioni basate sui dati per il tuo business.


Data lake

Crea un data lake basato su Hadoop che ottimizzi le potenzialità dei tuoi dati Hadoop. Gestisci, controlla, accedi ed esplora meglio i crescenti volumi, quantità e varietà di dati grazie all'ecosistema di soluzioni e prodotti IBM e Cloudera.



Connettiti

Community Hadoop Esplora Hadoop Blog