keyboard_arrow_up

Hadoop MapReduce

Hadoop MapReduce è un framework che permette la realizzazione di applicazioni per elaborazione in parallelo di grandi quantità di dati, suddivisi su numerosi cluster  composti da macchine che non causano interruzioni di servizio in presenza di guasti (fault-tolerant). Il suo funzionamento è ispirato alle funzioni “map” e “reduce” usate nella programmazione funzionale. Solitamente i data-set sono di diversi terabyte e i nodi su cui vengono distribuiti i processi sono centinaia o migliaia.

Map è una funzione che applica una data funzione a ogni elemento di una lista di elementi e restituisce una lista di risultati.

nReduce è una funzione che combina, tramite una data funzione, una lista di elementi e li riduce ad un solo valore.

Un processo MapReduce divide un insieme di dati in blocchi indipendenti, li organizza in coppie chiave-valore tramite funzione di Map e li suddivide su diversi nodi per elaborazione in parallelo. Successicamente, ogni risultato di ogni nodo viene recuperato e, tramite funzione di Reduce, vegono rielaborati per ottere l”esito finale.
Solitamente, i dati in input e in output vengono sempre memorizzati nel file system.
Tutti questi processi vengono pianificati, monitorati e rieseguiti, in caso di fallimento, dal framework.

MapReduce - Esempio pratico MapReduce – Esempio pratico

Nel dettaglio, la funzione Map divide i dati in input all’InputReader in intervalli e crea un processo di map per ogni intervallo. Successivamente il JobTracker distribuisce questi processi ai singoli TaskTracker con funzione di map. L”output di ogni processo viene suddiviso in gruppi di coppie chiave-valore per ogni nodo con funzione di reduce.
La funzione Reduce, invece, raccoglie tutti i risultati dei processi, li riordina e li combina per ottenere l”esito finale.

MapReduce è composto da un JobTracker ‘master’ e da un TaskTracker ‘slave’ per ogni nodo. Il JobTracker è responsabile della pianificazione, del monitoraggio e della loro ri-eseguire in caso di fallimento dei processi sui TaskTracker.

I TaskTracker sono i nodi che accettano i compiti di Map-Reduce e avviano processi JVM separati per l’esecuzione delle attività; questo garantisce che il fallimento di una singola attività non causi il fallimento dell”intero processo.
Quando tutti i singoli processi terminano (con successo o meno), i TaskTracker inviano una notifica al JobTracker.

Punti a favore di MapReduce

I principali vantaggi di MapReduce sono:

  • Semplicità: le applicazioni possono essere scritte in diversi linguaggi di programmazione, tra i quali Java, C++ e Python;
  • Scalabilità: questo framework è in grado di elaborare Petabytes di dati memorizzati nell”HDFS su un cluster;
  • Velocità: l’elaborazione in parallelo permette ad Hadoop di risolvere problemi, che prima richiedevano giorni di elaborazione, in poche ore o minuti;
  • Sistema di recovery integrata: più nodi hanno la stessa versione dei dati quindi, se un nodo non è disponibile, un altro può essere utilizzato per portare a termine lo stesso processo;
  • Minimo spostamento di dati: i processi di elaborazione dei dati avvengono sullo stesso nodo in cui sono memorizzati i dati; questo comporta ad una riduzione significativa delle attività di I/O nella rete favorendo, invece, quelle sullo stesso disco locale o sullo stesso rack;

© FEDERICO BAGATO. All Rights Reserved. Cookie Policy