Map / Reduce / Hadoop
Paradigma di programmazione per l’elaborazione e la riclassificazione di grandi quantità di dati sulla base di un algoritmo parallelo e distribuito su più sistemi di calcolo (worker nodes) ispirato alle funzioni map e reduce della programmazione funzionale. Il paradigma si basa su due operazioni da eseguire in sequenza: (1) map: i dati da elaborare vengono separati in blocchi e su ciascun blocco è applicata una operazione di mappatura che crea come output un file intermedio dove è immagazzinata una lista chiave-valore; (2) reduce: i file intermedi di mappa sono aggregati tra loro sulla base delle chiavi generate e viene prodotto un ulteriore file in cui si trova il risultato del batch job. Il client preleva poi questi file e li concatena, ottenendo il risultato finale. Il vantaggio di questa metodologia di elaborazione è che ogni operazione map lavora su un sottoinsieme di dati ed è pertanto gestibile con la massima efficienza prestazionale su di un sistema distribuito. Ideato nei laboratori Google nel 2004, il paradigma è stato successivamente incardinato nella piattaforma open source Apache Hadoop che è alla base della maggior parte di implementazioni del Big Data.
Riferimenti:
- Google, “MapReduce: Simplified Data Processing on Large Clusters” di J. Dean e S. Ghemawat, articolo del 2004 in cui il paradigma è stato presentato, https://ai.google/research/pubs/pub62
- Apache, “The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.”, http://hadoop.apache.org/
In collaborazione con Anthony Candiello