Home
topics
MapReduce
Data di aggiornamento: 5 settembre 2024
Collaboratori: Jim Holdsworth, Matthew Kosinski
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 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.
Scopri come trovare la giusta base di dati aperta e affidabile per le tue esigenze di business.
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.
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.
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.
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.
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.
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.
Ogni riduttore fornisce i risultati della sua elaborazione all'HDFS o ad altri storage dei dati.
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:
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:
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.
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.
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.
Oltre al framework Hadoop principale, l'ecosistema Hadoop include anche:
La programmazione MapReduce offre diversi benefici che possono aiutare le organizzazioni a ottenere insight preziosi dall'analytics dei big data, come ad esempio:
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:
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.
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.
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.
Sblocca il valore dei dati enterprise con IBM Consulting, creando un'organizzazione basata su insight in grado di generare vantaggi aziendali.
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.
Una guida per i leader dei dati per costruire un’organizzazione basata sui dati per alimentare il vantaggio aziendale.
Apache Hadoop è un framework software open source che fornisce un’elaborazione distribuita altamente affidabile di grandi insiemi di dati utilizzando semplici modelli di programmazione.