My IBM Accedi Iscriviti

Home

topics

MapReduce

Che cos'è MapReduce?

Che cos'è MapReduce?

Usa MapReduce con i prodotti IBM Iscriviti alla newsletter di Think
Illustrazione con collage di pittogrammi di monitor del computer, server, nuvole e puntini

Data di aggiornamento: 5 settembre 2024
Collaboratori
: Jim Holdsworth, Matthew Kosinski

Che cos'è MapReduce?

Che cos'è MapReduce?

MapReduce è un modello di programmazione che utilizza l'elaborazione parallela per velocizzare il trattamento dei dati su larga scala. MapReduce consente un'enorme scalabilità su centinaia o migliaia di server all'interno di un cluster Hadoop.

Il nome "MapReduce" si riferisce ai 2 compiti che il modello esegue per aiutare a "spezzettare" un'attività di trattamento dei dati di grandi dimensioni in tante attività più piccole che possono essere eseguite più velocemente in parallelo.

  • Il primo è il "compito di mappatura", che prende un set di dati e lo converte in un altro set di dati formattati come coppie chiave/valore, come città (chiavi) e temperature elevate giornaliere (valori).

  • La seconda è l'"attività di riduzione" che prende gli output di un'attività di mappa, aggrega tutti i valori con la stessa chiave ed elabora i dati per produrre un set finale di coppie chiave/valore.

Il modello di programmazione MapReduce è uno dei componenti di elaborazione principali alla base di Apache Hadoop, un framework software open source supportato da Apache Software Foundation e basato sul linguaggio di programmazione Java.

Il modello MapReduce può essere utilizzato anche all'esterno di Hadoop.

L'AI richiede nuove modalità di gestione dei dati

Scopri come trovare la giusta base di dati aperta e affidabile per le tue esigenze di business.

Contenuti correlati Registrati per la guida sulla modernizzazione delle app
Come funziona MapReduce

Come funziona MapReduce

MapReduce aiuta a suddividere i progetti di trattamento dei dati in parti più piccole in modo che possano essere eseguite più rapidamente.

L'utilizzo di un processore per analizzare un file enorme con terabyte o petabyte di dati potrebbe richiedere, ad esempio, 10 ore. Un lavoro MapReduce può dividere lo stesso file di dati in 10 compiti che vengono eseguiti in parallelo su 10 processori. L'esecuzione di questo lavoro potrebbe richiedere al massimo un'ora. I dati possono essere aggregati dai nodi di calcolo distribuiti per produrre un risultato.

Sebbene il mapping e la riduzione siano le funzioni fondamentali del modello MapReduce, il processo complessivo include alcuni passaggi aggiuntivi.

Input

Un'applicazione MapReduce accetta dati di input, che possono includere dati strutturati o non strutturati. Le applicazioni MapReduce di solito funzionano con file input memorizzati nel file system distribuito Hadoop (HDFS), ma il modello può funzionare anche con altre fonti di dati. (Per ulteriori informazioni, vedere "MapReduce nell’ecosistema Hadoop.")

Per un lavoro specifico, il framework MapReduce aiuta a selezionare server distribuiti, a gestire le comunicazioni e i trasferimenti di dati e a supportare la tolleranza agli errori e la ridondanza.

Suddivisione

I dati di input sono suddivisi in blocchi più piccoli. Questi blocchi vengono distribuiti ai mappatori, le funzioni che eseguono la mappatura nella fase successiva, situati in vari nodi di calcolo. Il framework MapReduce mira a un'assegnazione più o meno uniforme dei dati tra i mappatori per un bilanciamento del carico efficiente.

Mappatura

Su ogni nodo, la funzione di mappa elabora i dati ricevuti, convertendoli in coppie chiave/valore.

Il numero totale di mappatori viene determinato all'interno del framework Hadoop, in base al volume totale di dati e ai blocchi di memoria disponibili su ciascun mapper. I parametri per i mappatori, i riduttori e i formati di output possono essere impostati all'interno del cluster Hadoop.

Shuffling

Il framework Hadoop ordina gli output della mappa e assegna tutte le coppie chiave/valore con la stessa "chiave" (argomento) allo stesso riduttore. Ad esempio, in un set di dati sulle città e sulle loro temperature massime giornaliere, tutti i dati con la chiave "Tokyo" verrebbero inseriti nello stesso riduttore.

Il riduttore, come suggerisce il nome, è la funzione che esegue la fase di riduzione.

Riduzione

Le funzioni di riduzione elaborano le coppie chiave/valore emesse dai mappatori. Questo può comportare l'unione, la tabulazione o l'esecuzione di altre operazioni sui dati, a seconda del tipo di trattamento richiesto.

La mappatura e la riduzione possono essere effettuate sullo stesso set di server, ma questo è facoltativo.

Risultato

Ogni riduttore fornisce i risultati della sua elaborazione all'HDFS o ad altri storage dei dati.

Un esempio di MapReduce

Indipendentemente dalla quantità di dati che un'organizzazione desidera analizzare, i principi chiave rimangono gli stessi.

Per questo esempio, il set di dati include le città (le chiavi) e le corrispondenti temperature giornaliere (i valori) registrate per ciascuna città. Una coppia chiave/valore di esempio potrebbe essere simile alla seguente: <Toronto, 18>.

I dati sono distribuiti su più file. Ogni file può includere dati provenienti da una combinazione di città e può includere la stessa città più volte.

Da questo set di dati, l'utente desidera individuare la "temperatura massima" per ogni città nel periodo monitorato.

Un'implementazione di MapReduce per gestire questo processo potrebbe essere simile alla seguente:

  1. I file di dati contenenti informazioni sulla temperatura vengono immessi nell'applicazione MapReduce come input.

  2. I file sono suddivisi in attività di mappatura, con ogni attività assegnata a uno dei mappatori.

  3. I mappatori convertono i dati in coppie chiave/valore.

  4. Gli output della mappa vengono mescolati e ordinati in modo che tutti i valori con la stessa chiave di città finiscano con lo stesso riduttore. Ad esempio, tutti i valori della temperatura di Toronto vengono convogliati in un unico riduttore, mentre un altro riduttore aggrega tutti i valori di Londra.

  5. Ogni riduttore elabora i propri dati per stabilire il valore di temperatura più alto per ogni città. I dati vengono quindi ridotti alla sola coppia chiave/valore più alta per ogni città.

  6. Dopo la fase di riduzione, è possibile raccogliere i valori più alti per produrre un risultato: <Tokyo, 38> <London, 27> <New York, 33> <Toronto, 32>.
MapReduce all'interno dell'ecosistema Hadoop

MapReduce all'interno dell'ecosistema Hadoop

L'ecosistema Hadoop è una suite di moduli open source progettati per lavorare insieme per promuovere l'efficienza. Esistono numerosi moduli che costituiscono il framework principale di Hadoop, tra cui MapReduce e altri 3:

File system distribuito hadoop (HDFS)

HDFS è un file system distribuito che serve a memorizzare i dati delle applicazioni su un massimo di migliaia di server di base.

HDFS è progettato per fornire una tolleranza di errore per Hadoop e un accesso rapido ai dati. Per impostazione predefinita, i blocchi di dati vengono replicati su più nodi al momento del caricamento o della scrittura.

L'architettura HDFS include un NameNode per gestire lo spazio dei nomi del file system e l'accesso ai file, insieme a più DataNode per gestire il data storage.

Ancora un altro negoziatore di risorse (YARN)

YARN, Apache Hadoop open source, è un framework per la pianificazione dei lavori e la gestione delle risorse del cluster. Supporta numerosi workload, come query SQL, modellazione avanzata e streaming in tempo reale.

Hadoop Common

Questo modulo è una raccolta di utility e librerie di risorse che supportano gli altri moduli Hadoop. Conosciuto anche come Hadoop Core, include diverse risorse per il recupero automatico dei guasti, l'astrazione a livello di file system e di sistema operativo, i file e gli script Java Archive (JAR) e molto altro ancora.

Altri moduli

Oltre al framework Hadoop principale, l'ecosistema Hadoop include anche:

  • HBase (un database non relazionale, NoSQL)
  • Mahout e Spark MLlib (librerie di algoritmi per l'apprendimento automatico)
  • Oozie (un'utilità di pianificazione dei lavori)
  • Apache Hive e Apache Pig (strumenti di trattamento dei dati basati su query)
  • Solr e Lucene (per la ricerca e l'indicizzazione)
  • Spark (motore di trattamento dei dati in memoria)
  • Zookeeper (coordinamento del cluster)
Benefici di MapReduce

Benefici di MapReduce

La programmazione MapReduce offre diversi benefici che possono aiutare le organizzazioni a ottenere insight preziosi dall'analytics dei big data, come ad esempio:

  • Scalabilità: MapReduce consente alle organizzazioni di elaborare petabyte di dati memorizzati nell'HDFS su più server o nodi.

  • Elaborazione più rapida: grazie all'elaborazione parallela e allo spostamento minimo dei dati, MapReduce consente di ottimizzare il trattamento dei big data dei elevati volumi di dati.

  • Semplicità: gli sviluppatori possono scrivere applicazioni MapReduce nei linguaggi di programmazione che preferiscono, tra cui Java, C++ e Python.

  • Risparmio sui costi: essendo un programma open source, MapReduce può far risparmiare a un'organizzazione del budget sulle spese software. Detto questo, ci saranno ancora dei costi associati al personale addetto all'infrastruttura e all'ingegneria dei dati.
Casi d'uso di MapReduce

Casi d'uso di MapReduce

MapReduce può gestire in modo efficiente numerosi e semplici casi d'uso, anche se attività di trattamento dei dati complesse potrebbero essere eseguite più velocemente su altre applicazioni. Ecco alcune applicazioni adatte all'approccio di elaborazione parallela di MapReduce:

  • Integrazione dei dati, in cui il MapReduce framework viene utilizzato per eseguire il processo di estrazione, trasformazione e caricamento (ETL) per preparare i dati per l'analisi e lo storage.

  • Elaborazione delle immagini, in cui attività come la classificazione delle immagini possono essere suddivise in set di dati più piccoli ed elaborate in parallelo.

  • Log analysis, ad esempio l'individuazione delle tendenze esaminando i file di log dai server Web o delle applicazioni.

  • L'apprendimento automatico (ML), in cui MapReduce può aiutare con attività di formazione di apprendimento automatico (ML), come il filtraggio collaborativo, il clustering k-means e la regressione lineare.

  • Analisi del sentiment, in cui MapReduce può aiutare ad aggiungere i punteggi dei clienti su un sito Web o individuare i cluster di risposta, ad esempio.

  • Tabulazione, ad esempio il conteggio del numero di clienti che hanno rinnovato i propri account, per Paese, nell'ultimo anno.

  • Estrazione di testo, come lavori di conteggio di parole che tengono traccia del numero di volte in cui una parola compare in un determinato set di input, come una bacheca dei commenti.
Storia di MapReduce

Storia di MapReduce

Il paradigma di programmazione MapReduce è stato creato nel 2004 dagli informatici di Google Jeffery Dean e Sanjay Ghemawat. L'obiettivo del modello MapReduce è semplificare la trasformazione e l'analisi di grandi set di dati attraverso un trattamento massiccio parallelo su grandi cluster di hardware di base. Consente inoltre ai programmatori di concentrarsi sugli algoritmi piuttosto che sulla gestione dei dati.

Sebbene Google abbia introdotto il primo framework MapReduce, Apache Hadoop MapReduce rimane forse quello più popolare.

MapReduce ha svolto un ruolo chiave nel progresso dell'analisi dei big data, ma ha i suoi svantaggi. Ad esempio, i dati di solito non vengono conservati in memoria da MapReduce e la logica iterativa è possibile solo concatenando le app MapReduce. Questi fattori aggiungono una maggiore complessità e possono portare a tempi di trattamento più lunghi.

Sebbene MapReduce rimanga ampiamente utilizzato, specialmente nei sistemi legacy, numerose organizzazioni stanno passando a framework più veloci o più specializzati, come Apache Spark, per applicazioni di big data.

Soluzioni correlate

Soluzioni correlate

Software e soluzioni per la gestione dei dati

Progetta una strategia dati che elimini i silo di dati, riduca la complessità e migliori la qualità dei dati per esperienze eccezionali di clienti e dipendenti.

Esplora le soluzioni di gestione dei dati
IBM watsonx.data

Watsonx.data ti consente di scalare analytics e AI con tutti i tuoi dati, ovunque risiedano, attraverso uno storage dei dati aperto, ibrido e governato.

Scopri watsonx.data
Servizi di consulenza per dati e analytics

Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.

Esplora i servizi di analytics
Risorse

Risorse

Gestione dei dati per l'AI e l'analisi su larga scala

Esplora i benefici di lavorare con un data lakehouse, tra cui dati più affidabili e un’esecuzione più affidabile di analytics e progetti di AI.

The Data Differentiator

Una guida per i leader dei dati per costruire un’organizzazione basata sui dati per alimentare il vantaggio aziendale.

Cos’è Apache Hadoop?

Apache Hadoop è un framework software open source che fornisce un’elaborazione distribuita altamente affidabile di grandi insiemi di dati utilizzando semplici modelli di programmazione.

Fasi successive

Scala i workload AI per tutti i tuoi dati, ovunque, con IBM watsonx.data, uno storage dei dati adatto allo scopo costruito su un'architettura open data lakehouse.

Esplora watsonx.data Prenota una demo live