Big Data
Big Data: tecnologie, metodologie e applicazioniper l’analisi dei dati massivi
Ministero Dello Sviluppo EconomicoIstituto Superiore delle Comunicazioni e delle Tecnologie dell’Informazione
Seminario ISCOM
Simone AngeliniFondazione Ugo Bordoni
Francesca CapriUniversita di Roma Tor Vergata
6 marzo 2017
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 1 / 41
Big Data
Table of Contents
1 Big DataIntroduzioneMapReduceApache HadoopApache Spark
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 2 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Introduzione ai Big Data (1/2)
Definizione Informale
Per Big Data si intende un’elevatissima quantita di dati, spesso nonstrutturati, provenienti da fonti differenti e rilasciati in formati diversi.
Ogni giorno, nel 2016, sono stati generati ben 2.5 exabyte di datiSecondo le stime il 90% della quantita totale e stata prodotta negliultimi due anni
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 3 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Introduzione ai Big Data (1/2)
Definizione Informale
Per Big Data si intende un’elevatissima quantita di dati, spesso nonstrutturati, provenienti da fonti differenti e rilasciati in formati diversi.
Ogni giorno, nel 2016, sono stati generati ben 2.5 exabyte di datiSecondo le stime il 90% della quantita totale e stata prodotta negliultimi due anni
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 3 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Introduzione ai Big Data (2/2)
Definizione Formale
Una definizione piu vincolante e stata fornita nel 2001 e rivista dalgruppo di ricerca di IBM, risultando ad oggi la piu accettata.I Big Data sono definiti da ”5 V”:
Volume: Riferito alla dimensione dei dati
Varieta: Visto che i dati sono prodotti da fonti differenti e informati differenti
Velocita: Riferita alla velocita con cui vengono generati nuovi dati esvolte le analisi
Veracita: I dati vengono considerati incerti e necessitano di unafase di validazione prima e durante l’uso
Valore: Prodotto a seguito di analisi
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 4 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Big Data: Nuovo approccio
Problema
Come gestire una mole cosı grande di dati, di diversi formati, con sistemitradizionali, come DBMS relazionali in esecuzione su una singolamacchina?
Soluzione
Google nel 2004 ha introdotto un nuovo paradigma di programmazioneconosciuto come MapReduce
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 5 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Big Data: Nuovo approccio
Problema
Come gestire una mole cosı grande di dati, di diversi formati, con sistemitradizionali, come DBMS relazionali in esecuzione su una singolamacchina?
Soluzione
Google nel 2004 ha introdotto un nuovo paradigma di programmazioneconosciuto come MapReduce
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 5 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
MapReduce: Introduzione
Cos’e MapReduce?
Paradigma di programmazione per il processamento e la generazione didati massivi, attraverso un algoritmo parallelo e distribuito su di uncluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce e ispirato alle funzioni map e reduce dellaprogrammazione funzionale
Gli utenti definiscono una funzione map che processa una coppiakey/value e genera un insieme intermedio di coppie key/value, poispecificano una funzione reduce che fa il merge tra tutti i valoriintermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente lerisorse di un sistema distribuito e parallelo
MapReduce e il cuore del framework open-source Apache Hadoop
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 6 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
MapReduce: Introduzione
Cos’e MapReduce?
Paradigma di programmazione per il processamento e la generazione didati massivi, attraverso un algoritmo parallelo e distribuito su di uncluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce e ispirato alle funzioni map e reduce dellaprogrammazione funzionale
Gli utenti definiscono una funzione map che processa una coppiakey/value e genera un insieme intermedio di coppie key/value, poispecificano una funzione reduce che fa il merge tra tutti i valoriintermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente lerisorse di un sistema distribuito e parallelo
MapReduce e il cuore del framework open-source Apache Hadoop
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 6 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
MapReduce: Introduzione
Cos’e MapReduce?
Paradigma di programmazione per il processamento e la generazione didati massivi, attraverso un algoritmo parallelo e distribuito su di uncluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce e ispirato alle funzioni map e reduce dellaprogrammazione funzionale
Gli utenti definiscono una funzione map che processa una coppiakey/value e genera un insieme intermedio di coppie key/value, poispecificano una funzione reduce che fa il merge tra tutti i valoriintermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente lerisorse di un sistema distribuito e parallelo
MapReduce e il cuore del framework open-source Apache Hadoop
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 6 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
MapReduce: Introduzione
Cos’e MapReduce?
Paradigma di programmazione per il processamento e la generazione didati massivi, attraverso un algoritmo parallelo e distribuito su di uncluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce e ispirato alle funzioni map e reduce dellaprogrammazione funzionale
Gli utenti definiscono una funzione map che processa una coppiakey/value e genera un insieme intermedio di coppie key/value, poispecificano una funzione reduce che fa il merge tra tutti i valoriintermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente lerisorse di un sistema distribuito e parallelo
MapReduce e il cuore del framework open-source Apache Hadoop
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 6 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
MapReduce: Introduzione
Cos’e MapReduce?
Paradigma di programmazione per il processamento e la generazione didati massivi, attraverso un algoritmo parallelo e distribuito su di uncluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce e ispirato alle funzioni map e reduce dellaprogrammazione funzionale
Gli utenti definiscono una funzione map che processa una coppiakey/value e genera un insieme intermedio di coppie key/value, poispecificano una funzione reduce che fa il merge tra tutti i valoriintermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente lerisorse di un sistema distribuito e parallelo
MapReduce e il cuore del framework open-source Apache Hadoop
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 6 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
MapReduce: Introduzione
Cos’e MapReduce?
Paradigma di programmazione per il processamento e la generazione didati massivi, attraverso un algoritmo parallelo e distribuito su di uncluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce e ispirato alle funzioni map e reduce dellaprogrammazione funzionale
Gli utenti definiscono una funzione map che processa una coppiakey/value e genera un insieme intermedio di coppie key/value, poispecificano una funzione reduce che fa il merge tra tutti i valoriintermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente lerisorse di un sistema distribuito e parallelo
MapReduce e il cuore del framework open-source Apache Hadoop
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 6 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Esecuzione di un job MapReduce: Overview
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 7 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Esecuzione di un job MapReduce: Fasi (1/2)
Le fasi per la computazione di un job MapReduce sono principalmente 4:
1 Split dei dati in input: i dati in input vengono divisi in n partizioni,di una certa dimensione, ogni partizione viene assegnata ad unmapper differente
2 Fase di Map: in parallelo, ogni mapper prende in input una coppiachiave/valore(key/value), rappresentata da un record logicodell’input.In output, restituisce zero o piu coppie chiave/valore per quelladeterminata coppia chiave/valore in input.Ossia:
map(chiave1, valore1) → list(chiave2, valore2)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 8 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Esecuzione di un job MapReduce: Fasi (1/2)
Le fasi per la computazione di un job MapReduce sono principalmente 4:
1 Split dei dati in input: i dati in input vengono divisi in n partizioni,di una certa dimensione, ogni partizione viene assegnata ad unmapper differente
2 Fase di Map: in parallelo, ogni mapper prende in input una coppiachiave/valore(key/value), rappresentata da un record logicodell’input.In output, restituisce zero o piu coppie chiave/valore per quelladeterminata coppia chiave/valore in input.Ossia:
map(chiave1, valore1) → list(chiave2, valore2)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 8 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Esecuzione di un job MapReduce: Fasi (2/2)
3 Fase di shuffle e ordinamento: per ogni coppia chiave/valoreottenuta dalla fase di map, si determina il reducer che dovrariceverla (partitioning), inoltre le chiavi in input ad ogni reducersaranno ordinate
4 Fase di Reduce: sulle coppie ottenute nella fase precedente, vieneapplicata la funzione di riduzione sui valori aventi la stessa chiave, irisultati vengono raggruppati, restituiti in output ed eventualmentememorizzati, in base ai requisiti del job.Ossia:
reduce(chiave2, list(valori2)) → list(chiave3, valore3)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 9 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Esecuzione di un job MapReduce: Fasi (2/2)
5 Fase di shuffle e ordinamento: per ogni coppia chiave/valoreottenuta dalla fase di map, si determina il reducer che dovrariceverla (partitioning), inoltre le chiavi in input ad ogni reducersaranno ordinate
6 Fase di Reduce: sulle coppie ottenute nella fase precedente, vieneapplicata la funzione di riduzione sui valori aventi la stessa chiave, irisultati vengono raggruppati, restituiti in output ed eventualmentememorizzati, in base ai requisiti del job.Ossia:
reduce(chiave2, list(valori2)) → list(chiave3, valore3)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 9 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Esempio: WordCount utilizzando MapReduce
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 10 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Hadoop: Introduzione
Cos’e Hadoop?
Hadoop e un framework open-source per la scrittura e l’esecuzione diapplicazioni distribuite su di un cluster di macchine, che processanograndi quantita di dati.
Hadoop e stato creato nel 2005 da Doug Reed Cutting e MikeCafarella
E’ ispirato dal Google File System (GFS) e da MapReduce di Google
E’ un marchio registrato dell’ Apache Software Foundation
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 11 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Hadoop: Introduzione
Cos’e Hadoop?
Hadoop e un framework open-source per la scrittura e l’esecuzione diapplicazioni distribuite su di un cluster di macchine, che processanograndi quantita di dati.
Hadoop e stato creato nel 2005 da Doug Reed Cutting e MikeCafarella
E’ ispirato dal Google File System (GFS) e da MapReduce di Google
E’ un marchio registrato dell’ Apache Software Foundation
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 11 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Hadoop: Introduzione
Cos’e Hadoop?
Hadoop e un framework open-source per la scrittura e l’esecuzione diapplicazioni distribuite su di un cluster di macchine, che processanograndi quantita di dati.
Hadoop e stato creato nel 2005 da Doug Reed Cutting e MikeCafarella
E’ ispirato dal Google File System (GFS) e da MapReduce di Google
E’ un marchio registrato dell’ Apache Software Foundation
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 11 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Hadoop: Introduzione
Cos’e Hadoop?
Hadoop e un framework open-source per la scrittura e l’esecuzione diapplicazioni distribuite su di un cluster di macchine, che processanograndi quantita di dati.
Hadoop e stato creato nel 2005 da Doug Reed Cutting e MikeCafarella
E’ ispirato dal Google File System (GFS) e da MapReduce di Google
E’ un marchio registrato dell’ Apache Software Foundation
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 11 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Come interagire con un cluster Hadoop?
Un cluster Hadoop e un insieme di macchine commodity. Lemacchine sono collegate tra loro attraverso la rete e si trovano nellastessa locazioneDiversi client si connettono da remoto al cluster di Hadoop esottomettono ad esso il job da eseguire
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 12 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Perche Apache Hadoop?
Potenza di calcolo: il modello di calcolo distribuito di Hadoopprocessa velocemente big data
Fault tolerance: i dati e le applicazioni processate sono protette daifallimenti hardware. Se un nodo cade, i job vengonoautomaticamente rediretti ad altri nodi, in questo modo lacomputazione non fallisce. Vengono memorizzate, automaticamente,piu copie di tutti i dati
Flessibilita: e possibile memorizzare dati di qualsiasi tipo, cometesto, immagini e video
Basso costo: il framework open-source e gratuito e usa hardwarecommodity
Scalabilita: aggiungendo piu nodi al cluster, Hadoop riesce a gestirel’aumento dei dati, in tempo lineare
Semplicita: Hadoop permette agli utenti di scrivere velocementecodice parallelo efficiente
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 13 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Hadoop: Architettura master/slave (1/2)
Core di Hadoop
Hadoop presenta un’architettura distribuita master/slave formata daiseguenti componenti principali:
Hadoop Common: strato software comune che fornisce funzioni disupporto agli altri moduli Hadoop
Hadoop Distributed File System (HDFS): file system distribuitoche si occupa della memorizzazione dei dati
Yet Another Resource Negotiator (YARN): introdotto in Hadoop2, si occupa della gestione delle risorse del cluster(resource manager)
MapReduce: modello di programmazione batch che consente ilprocessamento di una grande mole di dati.In Hadoop 2, MapReduce e implementato come un’applicazioneYARN
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 14 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Hadoop: Architettura master/slave (2/2)
Il master YARN esegue, per ogni applicazione YARN, lo schedulingeffettivo del lavoro
Il master MapReduce si occupa di dove il lavoro computazionaledeve essere eseguito nei nodi slave
Il master HDFS e responsabile del partizionamento dei datimemorizzati nei nodi slave e tiene traccia di dove i dati sono situati
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 15 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: HDFS (1/3)
File System distribuito ispirato al Google File System (GFS)
Ottimizzato per lavorare con grandi quantita di dati
Presenta un’elevata velocita di accesso ai dati, in quanto leapplicazioni HDFS utilizzano modelli di accessowrite-once-read-many
Replica i file per un numero di volte configurato (ridondanza deidati)
E’ in grado di gestire fallimenti hardware e software, ri-replicandoautomaticamente i blocchi di dati sui nodi che hanno fallito (faulttolerance)
Permette alle applicazioni di spostare la loro computazione dovesono memorizzati i dati, cosı da minimizzare la congestione della rete
E’ progettato per essere facilmente portabile da una piattaforma adun’altra
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 16 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: HDFS (2/3)
Architettura
HDFS ha un’architettura master/slave costituita da:
un singolo NameNode: master che dirige piu slave DataNodenell’esecuzione delle operazioni di I/O a basso livello.Il NameNode tiene traccia di come i file sono divisi in blocchi, diquali DataNode memorizzano questi blocchi, dello stato generaledell’HDFS, regolano, inoltre, le operazioni di accesso ai file e cartelleda parte dei client HDFS
piu DataNode: slave che contengono i dati veri e propri edeseguono fisicamente le operazioni sui blocchi, come creazione,cancellazione, replica, per servire le richieste di lettura e scrittura daparte dei client HDFS
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 17 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: HDFS (3/3)
Architettura HDFS
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 18 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: MapReduce (1/3)
Cos’e MapReduce?
Come visto in precedenza, MapReduce e un modello di programmazioneper il processamento e la generazione di dati massivi, attraverso unalgoritmo parallelo e distribuito su di un cluster
Architettura
In Hadoop 1, MapReduce presenta due componenti:
JobTracker: nodo master del cluster Hadoop eseguito sulNameNode, esiste un solo JobTracker per cluster.Il JobTracker e il collegamento tra l’applicazione client e Hadoop, sioccupa della gestione delle risorse e del ciclo di vita del jobMapReduce
TaskTracker: C’e un solo TaskTracker per nodo slave, ogniTaskTracker e responsabile della gestione ed esecuzione dei taskindividuali che il JobTracker gli ha assegnato
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 19 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: MapReduce (1/3)
Cos’e MapReduce?
Come visto in precedenza, MapReduce e un modello di programmazioneper il processamento e la generazione di dati massivi, attraverso unalgoritmo parallelo e distribuito su di un cluster
Architettura
In Hadoop 1, MapReduce presenta due componenti:
JobTracker: nodo master del cluster Hadoop eseguito sulNameNode, esiste un solo JobTracker per cluster.Il JobTracker e il collegamento tra l’applicazione client e Hadoop, sioccupa della gestione delle risorse e del ciclo di vita del jobMapReduce
TaskTracker: C’e un solo TaskTracker per nodo slave, ogniTaskTracker e responsabile della gestione ed esecuzione dei taskindividuali che il JobTracker gli ha assegnato
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 19 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: MapReduce (2/3)
Architettura MapReduce
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 20 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: MapReduce (3/3)
Processo MapReduce
I client sottomettono i job al cluster Hadoop
Il JobTracker determina i job da eseguire e alloca i task agli slaveTaskTracker, che sono in esecuzione sui DataNode
Il JobTracker controllera l’esecuzione dei TaskTracker, tenendotraccia delle risorse consumate e disponibili e risolvendo eventualisituazioni di fallimento dei task
Ogni TaskTracker gestisce i task che il JobTracker gli ha assegnato
Ogni TaskTracker puo generare JVM multiple per gestire piu task dimap e reduce in parallelo
Ogni TaskTracker deve costantemente comunicare al JobTracker lostato del task. Se il JobTracker non riceve nulla per un determinatoperiodo di tempo, allora assumera il TaskTracker come crashato eriassegnera i task corrispondenti ad altri nodi del cluster
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 21 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: YARN (1/5)
Limiti di Hadoop 1
MapReduce e principalmente utilizzato per elaborazioni batch,quindi non lavora bene in presenza di dati real-time
MapReduce non supporta computazioni iterative o elaborazioni sugrafi
Cos’e YARN?
YARN e il Cluster Manager di Hadoop, funge da scheduler genericoe distribuito delle applicazioni e delle risorse
YARN e stato introdotto in Hadoop 2 per superare i limiti delMapReduce in Hadoop 1
YARN risponde alle richieste del client creando un container, ovveroun concetto astratto che rappresenta la collezione di risorse fisicheallocate per un’applicazione
YARN monitora l’esecuzione del container, terminandola senecessario
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 22 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: YARN (1/5)
Limiti di Hadoop 1
MapReduce e principalmente utilizzato per elaborazioni batch,quindi non lavora bene in presenza di dati real-time
MapReduce non supporta computazioni iterative o elaborazioni sugrafi
Cos’e YARN?
YARN e il Cluster Manager di Hadoop, funge da scheduler genericoe distribuito delle applicazioni e delle risorse
YARN e stato introdotto in Hadoop 2 per superare i limiti delMapReduce in Hadoop 1
YARN risponde alle richieste del client creando un container, ovveroun concetto astratto che rappresenta la collezione di risorse fisicheallocate per un’applicazione
YARN monitora l’esecuzione del container, terminandola senecessario
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 22 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: YARN (2/5)
Hadoop 1 vs Hadoop 2
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 23 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: YARN (3/5)
Componenti principali
In YARN, le funzioni svolte dal JobTracker sono state affidate a duecomponenti principali:
ResourceManager: Un cluster Hadoop ha un singoloResourceManager per l’intero cluster.Il ResourceManager e un processo master YARN che si occupa digestire le risorse del cluster Hadoop e di rispondere alle richieste delclient per la creazione dei container.La creazione effettiva dei container e delegata al NodeManager
NodeManager: processo slave eseguito su ogni nodo del cluster.Si occupa di creare, monitorare ed eliminare i container.Inoltre fornisce dei report sullo stato dei container alResourceManager, che li utilizza per gestire le richieste di nuovicontainer
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 24 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: YARN (4/5)
Esecuzione di una applicazione YARN
1 Si lancia un’applicazione YARN, quindi un client YARN comunica alResourceManager di creare una nuova istanza di unApplicationMaster
2 L’ApplicationMaster, processo master di una applicazione YARN,che crea, attraverso il ResourceManager, i container dell’applicazione
3 L’ApplicationMaster stabilisce poi il collegamento con ilNodeManager per la creazione effettiva dei container
4 Se si verifica un fallimento tra i container dell’applicazione, ilResourceManager invia un messaggio all’ApplicationMaster, chedecide come gestire l’evento
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 25 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Componenti del core di Hadoop: YARN (5/5)
Esecuzione di una applicazione YARN
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 26 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Spark: Introduzione
Apache Spark e un framework open-source general-purpose dicalcolo distribuito su cluster, fornisce un’interfaccia che garantiscedurante le computazioni il parallelismo dei dati e la fault-tolerance
Spark e stato sviluppato dall’UC Berkeley nel 2009 e poi donatoall’Apache Software Foundation nel 2013
Spark e stato progettato per velocizzare le computazioni, e basatosu Hadoop MapReduce ma estende il modello MapReducepermettendo piu tipi di computazioni, che includono queryinterattive, stream processing e machine learning
Caratteristica principale
Esecuzione dei calcoli in memoria centrale, compresa la memorizzazionedei risultati intermedi!Questa caratteristica permette di velocizzare l’esecuzione di unaapplicazione
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 27 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Spark: Introduzione
Apache Spark e un framework open-source general-purpose dicalcolo distribuito su cluster, fornisce un’interfaccia che garantiscedurante le computazioni il parallelismo dei dati e la fault-tolerance
Spark e stato sviluppato dall’UC Berkeley nel 2009 e poi donatoall’Apache Software Foundation nel 2013
Spark e stato progettato per velocizzare le computazioni, e basatosu Hadoop MapReduce ma estende il modello MapReducepermettendo piu tipi di computazioni, che includono queryinterattive, stream processing e machine learning
Caratteristica principale
Esecuzione dei calcoli in memoria centrale, compresa la memorizzazionedei risultati intermedi!Questa caratteristica permette di velocizzare l’esecuzione di unaapplicazione
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 27 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Perche scegliere Apache Spark?
Semplicita: tutte le funzionalita di Spark sono accessibili tramite ilsuo insieme di API, ben documentato e che permette ai dati diinteragire velocemente e facilmente
Velocita: riduce il numero di operazioni di lettura/scrittura su discoeseguendo i calcoli e memorizzando i risultati intermedi, in memoriacentrale
Supporta diversi linguaggi: Spark supporta diversi linguaggi diprogrammazione come Java, Python, R, and Scala
Analisi avanzate: Spark non supporta solo job MapReduce, maanche query SQL, streaming data, machine learning e algoritmirelativi ai grafi
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 28 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 29 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (1/8)
Spark Core
Spark Core e il cuore di Spark e contiene:
componenti per il task scheduling
componenti per la gestione della memoria
componenti per il recupero da fallimenti
le principali strutture di astrazione dei dati (RDD)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 30 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (2/8)
Resilient Distributed Datasets (RDD)
Resilient Distributed Datasets (RDD) e la struttura datifondamentale di Spark
E’ una collezione immutabile distribuita di oggetti
Ogni dataset in RDD e diviso in partizioni logiche, che possonoessere computate su diversi nodi del cluster
RDD puo contenere oggetti di qualsiasi tipo, Python, Scala, Java,incluse classi definite dall’utente
RDD e una collezione fault-tolerant di elementi che possono essereutilizzati in parallelo
Un RDD puo essere creato a partire da un dataset esterno(JSON,HDFS,MySQL,CSV...) o a seguito di manipolazioni diun’applicazione Spark (derivati da oggetti Scala,Python,Java...)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 31 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti(3/8)
Operazioni su RDD
Una volta che il dato e stato memorizzato in un RDD, su di esso sarannopossibili due operazioni:
Trasformazioni: Creazione di un nuovo RDD da un RDDprecedente, attraverso operazioni come mapping, filtering, ed altre
Azioni: Restituiscono al Driver un risultato calcolato a partire da unRDD, o lo scrivono su disco
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 32 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (4/8)
Spark SQL
Pacchetto dedicato all’interfaccia con dati strutturati
Permette interrogazioni sui dati in linguaggio SQL (e sue varianti ades: HQL)
Permette la lettura da varie sorgenti di dati (tabelle Hive, Parquet,JSON...)
Permette la combinazione di query in linguaggio SQL con lamanipolazione dei dati tipica degli RDD (in diversi linguaggi, ad es.Java, Python, Scala)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 33 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (5/8)
Spark Streaming
Componente per il processamento real-time di flussi continui di dati
Fornisce API per la gestione di flussi di dati utilizzando lecomponenti base di Spark Core (RDD)
Progettato per fornire lo stesso grado di tolleranza ai fallimenti,throughput e scalabilita di Spark Core
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 34 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (6/8)
GraphX
Libreria per la gestione di grafi (ad es. grafi sociali basati sulleamicizie, sui messaggi tra utenti ecc.)
Fornisce computazioni sul grafo altamente parallelizzabili
Permette la creazione di grafi a partire da RDD
Fornisce vari operatori per la gestione dei grafi (es: subgraph,mapVertices...)
Fornisce una libreria di algoritmi comuni specifici per i grafi(PageRank, maxOutDegree, maxInDegree...)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 35 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (7/8)
MLib
Contiene le funzionalita piu comuni di machine learning (ML)
Fornisce diversi algoritmi di apprendimento automatico(classificazione, regressione, clustering...)
Tutti i metodi sono progettati per poter distribuire il calcolo sucluster di macchine
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 36 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Ambiente Apache Spark: Componenti (8/8)
SparkR
Pacchetto che permette di utilizzare R (linguaggio diprogrammazione statistico) in ambiente Spark
Contiene un’implementazione distribuita dei Data Frame di R(Distributed Data Frame)
Supporta le operazioni di selezione, filtraggio, aggregazione tipichedi R
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 37 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Spark: Architettura (1/3)
Schema dei componenti di Spark
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 38 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Spark: Architettura (2/3)
Passi per l’esecuzione di un’applicazione Spark
1 Un’applicazione Spark e eseguita come un insieme di processiindipendenti sul cluster, coordinati dall’oggetto SparkContextcontenuto nel programma principale chiamato Driver Program
2 Lo SparkContext deve connettersi al Cluster Manager che ha ilcompito di allocare le risorse
3 Una volta connesso, lo SparkContext avvia gli Executor, processiresponsabili dello svolgimento delle operazioni, all’interno dei WorkerNode
4 Ogni processo Executor, uno per ogni core del processore, e in realtauna Java Virtual Machine, a cui viene inviato il codice delprogramma (contenuto in un file JAR) ed i task che deve eseguire
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 39 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
Apache Spark: Architettura (3/3)
Tipi di Cluster Manager
Spark supporta tre tipi di Cluster Manager:
Standalone: Un semplice Cluster Manager incluso in Spark,facilmente configurabile
Apache Mesos: Un Cluster Manager generale che puo ancheeseguire Hadoop MapReduce e applicazioni di servizio
Hadoop YARN: Il Resource Manager contenuto in Hadoop 2
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 40 / 41
Big Data
IntroduzioneMapReduceApache HadoopApache Spark
In conclusione: Benefici di Hadoop e Spark
Spark non e il sostituto di Hadoop, il MapReduce non e morto
Spark non e una versione modificata di Hadoop
Hadoop e solo un modo per implementare Spark, in tal caso Sparkbeneficia del Cluster Manager (YARN) e del livello di storage(HDFS) di Hadoop
Spark pero, puo anche essere completamente separato da Hadoop,integrando al suo interno Cluster Manager e piattaforme per lostorage dei dati alternativi
Quando Spark viene eseguito su Hadoop, Spark, grazie ai suoimoduli relativi al machine learning, ai grafi, all’SQL, fornisce ad essodelle funzionalita aggiuntive
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi Simone Angelini - Francesca Capri 41 / 41