Big Data
Big Data: tecnologie, metodologie e applicazioni
per l’analisi dei dati massivi
Ministero Dello Sviluppo Economico
Istituto Superiore delle Comunicazioni e delle Tecnologie dell’Informazione
Seminario ISCOM
Simone Angelini
Fondazione Ugo Bordoni
Francesca Capri
Università 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 Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
2 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Introduzione ai Big Data (1/2)
Definizione Informale
Per Big Data si intende un’elevatissima quantità di dati, spesso non
strutturati, provenienti da fonti differenti e rilasciati in formati diversi.
Ogni giorno, nel 2016, sono stati generati ben 2.5 exabyte di dati
Secondo le stime il 90% della quantità totale è stata prodotta negli
ultimi due anni
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
3 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Introduzione ai Big Data (1/2)
Definizione Informale
Per Big Data si intende un’elevatissima quantità di dati, spesso non
strutturati, provenienti da fonti differenti e rilasciati in formati diversi.
Ogni giorno, nel 2016, sono stati generati ben 2.5 exabyte di dati
Secondo le stime il 90% della quantità totale è stata prodotta negli
ultimi due anni
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
3 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Introduzione ai Big Data (2/2)
Definizione Formale
Una definizione più vincolante è stata fornita nel 2001 e rivista dal
gruppo di ricerca di IBM, risultando ad oggi la più accettata.
I Big Data sono definiti da ”5 V”:
Volume: Riferito alla dimensione dei dati
Varietà: Visto che i dati sono prodotti da fonti differenti e in
formati differenti
Velocità: Riferita alla velocità con cui vengono generati nuovi dati e
svolte le analisi
Veracità: I dati vengono considerati incerti e necessitano di una
fase 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Big Data: Nuovo approccio
Problema
Come gestire una mole cosı̀ grande di dati, di diversi formati, con sistemi
tradizionali, come DBMS relazionali in esecuzione su una singola
macchina?
Soluzione
Google nel 2004 ha introdotto un nuovo paradigma di programmazione
conosciuto come MapReduce
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
5 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Big Data: Nuovo approccio
Problema
Come gestire una mole cosı̀ grande di dati, di diversi formati, con sistemi
tradizionali, come DBMS relazionali in esecuzione su una singola
macchina?
Soluzione
Google nel 2004 ha introdotto un nuovo paradigma di programmazione
conosciuto come MapReduce
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
5 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
MapReduce: Introduzione
Cos’è MapReduce?
Paradigma di programmazione per il processamento e la generazione di
dati massivi, attraverso un algoritmo parallelo e distribuito su di un
cluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce è ispirato alle funzioni map e reduce della
programmazione funzionale
Gli utenti definiscono una funzione map che processa una coppia
key/value e genera un insieme intermedio di coppie key/value, poi
specificano una funzione reduce che fa il merge tra tutti i valori
intermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente le
risorse di un sistema distribuito e parallelo
MapReduce è 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
MapReduce: Introduzione
Cos’è MapReduce?
Paradigma di programmazione per il processamento e la generazione di
dati massivi, attraverso un algoritmo parallelo e distribuito su di un
cluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce è ispirato alle funzioni map e reduce della
programmazione funzionale
Gli utenti definiscono una funzione map che processa una coppia
key/value e genera un insieme intermedio di coppie key/value, poi
specificano una funzione reduce che fa il merge tra tutti i valori
intermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente le
risorse di un sistema distribuito e parallelo
MapReduce è 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
MapReduce: Introduzione
Cos’è MapReduce?
Paradigma di programmazione per il processamento e la generazione di
dati massivi, attraverso un algoritmo parallelo e distribuito su di un
cluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce è ispirato alle funzioni map e reduce della
programmazione funzionale
Gli utenti definiscono una funzione map che processa una coppia
key/value e genera un insieme intermedio di coppie key/value, poi
specificano una funzione reduce che fa il merge tra tutti i valori
intermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente le
risorse di un sistema distribuito e parallelo
MapReduce è 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
MapReduce: Introduzione
Cos’è MapReduce?
Paradigma di programmazione per il processamento e la generazione di
dati massivi, attraverso un algoritmo parallelo e distribuito su di un
cluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce è ispirato alle funzioni map e reduce della
programmazione funzionale
Gli utenti definiscono una funzione map che processa una coppia
key/value e genera un insieme intermedio di coppie key/value, poi
specificano una funzione reduce che fa il merge tra tutti i valori
intermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente le
risorse di un sistema distribuito e parallelo
MapReduce è 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
MapReduce: Introduzione
Cos’è MapReduce?
Paradigma di programmazione per il processamento e la generazione di
dati massivi, attraverso un algoritmo parallelo e distribuito su di un
cluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce è ispirato alle funzioni map e reduce della
programmazione funzionale
Gli utenti definiscono una funzione map che processa una coppia
key/value e genera un insieme intermedio di coppie key/value, poi
specificano una funzione reduce che fa il merge tra tutti i valori
intermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente le
risorse di un sistema distribuito e parallelo
MapReduce è 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
MapReduce: Introduzione
Cos’è MapReduce?
Paradigma di programmazione per il processamento e la generazione di
dati massivi, attraverso un algoritmo parallelo e distribuito su di un
cluster
MapReduce lavora secondo il principio ”divide et impera”
Il modello MapReduce è ispirato alle funzioni map e reduce della
programmazione funzionale
Gli utenti definiscono una funzione map che processa una coppia
key/value e genera un insieme intermedio di coppie key/value, poi
specificano una funzione reduce che fa il merge tra tutti i valori
intermedi associati alla stessa chiave intermedia
MapReduce permette al programmatore di utilizzare facilmente le
risorse di un sistema distribuito e parallelo
MapReduce è 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
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache 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 un
mapper differente
2
Fase di Map: in parallelo, ogni mapper prende in input una coppia
chiave/valore(key/value), rappresentata da un record logico
dell’input.
In output, restituisce zero o più coppie chiave/valore per quella
determinata 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
Introduzione
MapReduce
Apache Hadoop
Apache 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 un
mapper differente
2
Fase di Map: in parallelo, ogni mapper prende in input una coppia
chiave/valore(key/value), rappresentata da un record logico
dell’input.
In output, restituisce zero o più coppie chiave/valore per quella
determinata 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Esecuzione di un job MapReduce: Fasi (2/2)
3
Fase di shuffle e ordinamento: per ogni coppia chiave/valore
ottenuta dalla fase di map, si determina il reducer che dovrà
riceverla (partitioning), inoltre le chiavi in input ad ogni reducer
saranno ordinate
4
Fase di Reduce: sulle coppie ottenute nella fase precedente, viene
applicata la funzione di riduzione sui valori aventi la stessa chiave, i
risultati vengono raggruppati, restituiti in output ed eventualmente
memorizzati, 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Esecuzione di un job MapReduce: Fasi (2/2)
5
Fase di shuffle e ordinamento: per ogni coppia chiave/valore
ottenuta dalla fase di map, si determina il reducer che dovrà
riceverla (partitioning), inoltre le chiavi in input ad ogni reducer
saranno ordinate
6
Fase di Reduce: sulle coppie ottenute nella fase precedente, viene
applicata la funzione di riduzione sui valori aventi la stessa chiave, i
risultati vengono raggruppati, restituiti in output ed eventualmente
memorizzati, 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
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Hadoop: Introduzione
Cos’è Hadoop?
Hadoop è un framework open-source per la scrittura e l’esecuzione di
applicazioni distribuite su di un cluster di macchine, che processano
grandi quantità di dati.
Hadoop è stato creato nel 2005 da Doug Reed Cutting e Mike
Cafarella
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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Hadoop: Introduzione
Cos’è Hadoop?
Hadoop è un framework open-source per la scrittura e l’esecuzione di
applicazioni distribuite su di un cluster di macchine, che processano
grandi quantità di dati.
Hadoop è stato creato nel 2005 da Doug Reed Cutting e Mike
Cafarella
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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Hadoop: Introduzione
Cos’è Hadoop?
Hadoop è un framework open-source per la scrittura e l’esecuzione di
applicazioni distribuite su di un cluster di macchine, che processano
grandi quantità di dati.
Hadoop è stato creato nel 2005 da Doug Reed Cutting e Mike
Cafarella
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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Hadoop: Introduzione
Cos’è Hadoop?
Hadoop è un framework open-source per la scrittura e l’esecuzione di
applicazioni distribuite su di un cluster di macchine, che processano
grandi quantità di dati.
Hadoop è stato creato nel 2005 da Doug Reed Cutting e Mike
Cafarella
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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Come interagire con un cluster Hadoop?
Un cluster Hadoop è un insieme di macchine commodity. Le
macchine sono collegate tra loro attraverso la rete e si trovano nella
stessa locazione
Diversi client si connettono da remoto al cluster di Hadoop e
sottomettono 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Perché Apache Hadoop?
Potenza di calcolo: il modello di calcolo distribuito di Hadoop
processa velocemente big data
Fault tolerance: i dati e le applicazioni processate sono protette dai
fallimenti hardware. Se un nodo cade, i job vengono
automaticamente rediretti ad altri nodi, in questo modo la
computazione non fallisce. Vengono memorizzate, automaticamente,
più copie di tutti i dati
Flessibilità: è possibile memorizzare dati di qualsiasi tipo, come
testo, immagini e video
Basso costo: il framework open-source è gratuito e usa hardware
commodity
Scalabilità: aggiungendo più nodi al cluster, Hadoop riesce a gestire
l’aumento dei dati, in tempo lineare
Semplicità: Hadoop permette agli utenti di scrivere velocemente
codice parallelo efficiente
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
13 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Hadoop: Architettura master/slave (1/2)
Core di Hadoop
Hadoop presenta un’architettura distribuita master/slave formata dai
seguenti componenti principali:
Hadoop Common: strato software comune che fornisce funzioni di
supporto agli altri moduli Hadoop
Hadoop Distributed File System (HDFS): file system distribuito
che si occupa della memorizzazione dei dati
Yet Another Resource Negotiator (YARN): introdotto in Hadoop
2, si occupa della gestione delle risorse del cluster(resource manager)
MapReduce: modello di programmazione batch che consente il
processamento di una grande mole di dati.
In Hadoop 2, MapReduce è implementato come un’applicazione
YARN
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
14 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Hadoop: Architettura master/slave (2/2)
Il master YARN esegue, per ogni applicazione YARN, lo scheduling
effettivo del lavoro
Il master MapReduce si occupa di dove il lavoro computazionale
deve essere eseguito nei nodi slave
Il master HDFS è responsabile del partizionamento dei dati
memorizzati 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: HDFS (1/3)
File System distribuito ispirato al Google File System (GFS)
Ottimizzato per lavorare con grandi quantità di dati
Presenta un’elevata velocità di accesso ai dati, in quanto le
applicazioni HDFS utilizzano modelli di accesso
write-once-read-many
Replica i file per un numero di volte configurato (ridondanza dei
dati)
E’ in grado di gestire fallimenti hardware e software, ri-replicando
automaticamente i blocchi di dati sui nodi che hanno fallito (fault
tolerance)
Permette alle applicazioni di spostare la loro computazione dove
sono memorizzati i dati, cosı̀ da minimizzare la congestione della rete
E’ progettato per essere facilmente portabile da una piattaforma ad
un’altra
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
16 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: HDFS (2/3)
Architettura
HDFS ha un’architettura master/slave costituita da:
un singolo NameNode: master che dirige più slave DataNode
nell’esecuzione delle operazioni di I/O a basso livello.
Il NameNode tiene traccia di come i file sono divisi in blocchi, di
quali DataNode memorizzano questi blocchi, dello stato generale
dell’HDFS, regolano, inoltre, le operazioni di accesso ai file e cartelle
da parte dei client HDFS
più DataNode: slave che contengono i dati veri e propri ed
eseguono fisicamente le operazioni sui blocchi, come creazione,
cancellazione, replica, per servire le richieste di lettura e scrittura da
parte dei client HDFS
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
17 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: MapReduce (1/3)
Cos’è MapReduce?
Come visto in precedenza, MapReduce è un modello di programmazione
per il processamento e la generazione di dati massivi, attraverso un
algoritmo parallelo e distribuito su di un cluster
Architettura
In Hadoop 1, MapReduce presenta due componenti:
JobTracker: nodo master del cluster Hadoop eseguito sul
NameNode, esiste un solo JobTracker per cluster.
Il JobTracker è il collegamento tra l’applicazione client e Hadoop, si
occupa della gestione delle risorse e del ciclo di vita del job
MapReduce
TaskTracker: C’è un solo TaskTracker per nodo slave, ogni
TaskTracker è responsabile della gestione ed esecuzione dei task
individuali 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: MapReduce (1/3)
Cos’è MapReduce?
Come visto in precedenza, MapReduce è un modello di programmazione
per il processamento e la generazione di dati massivi, attraverso un
algoritmo parallelo e distribuito su di un cluster
Architettura
In Hadoop 1, MapReduce presenta due componenti:
JobTracker: nodo master del cluster Hadoop eseguito sul
NameNode, esiste un solo JobTracker per cluster.
Il JobTracker è il collegamento tra l’applicazione client e Hadoop, si
occupa della gestione delle risorse e del ciclo di vita del job
MapReduce
TaskTracker: C’è un solo TaskTracker per nodo slave, ogni
TaskTracker è responsabile della gestione ed esecuzione dei task
individuali 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
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache 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 slave
TaskTracker, che sono in esecuzione sui DataNode
Il JobTracker controllerà l’esecuzione dei TaskTracker, tenendo
traccia delle risorse consumate e disponibili e risolvendo eventuali
situazioni di fallimento dei task
Ogni TaskTracker gestisce i task che il JobTracker gli ha assegnato
Ogni TaskTracker può generare JVM multiple per gestire più task di
map e reduce in parallelo
Ogni TaskTracker deve costantemente comunicare al JobTracker lo
stato del task. Se il JobTracker non riceve nulla per un determinato
periodo di tempo, allora assumerà il TaskTracker come crashato e
riassegnerà 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: YARN (1/5)
Limiti di Hadoop 1
MapReduce è principalmente utilizzato per elaborazioni batch,
quindi non lavora bene in presenza di dati real-time
MapReduce non supporta computazioni iterative o elaborazioni su
grafi
Cos’è YARN?
YARN è il Cluster Manager di Hadoop, funge da scheduler generico
e distribuito delle applicazioni e delle risorse
YARN è stato introdotto in Hadoop 2 per superare i limiti del
MapReduce in Hadoop 1
YARN risponde alle richieste del client creando un container, ovvero
un concetto astratto che rappresenta la collezione di risorse fisiche
allocate per un’applicazione
YARN monitora l’esecuzione del container, terminandola se
necessario
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
22 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: YARN (1/5)
Limiti di Hadoop 1
MapReduce è principalmente utilizzato per elaborazioni batch,
quindi non lavora bene in presenza di dati real-time
MapReduce non supporta computazioni iterative o elaborazioni su
grafi
Cos’è YARN?
YARN è il Cluster Manager di Hadoop, funge da scheduler generico
e distribuito delle applicazioni e delle risorse
YARN è stato introdotto in Hadoop 2 per superare i limiti del
MapReduce in Hadoop 1
YARN risponde alle richieste del client creando un container, ovvero
un concetto astratto che rappresenta la collezione di risorse fisiche
allocate per un’applicazione
YARN monitora l’esecuzione del container, terminandola se
necessario
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
22 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Componenti del core di Hadoop: YARN (3/5)
Componenti principali
In YARN, le funzioni svolte dal JobTracker sono state affidate a due
componenti principali:
ResourceManager: Un cluster Hadoop ha un singolo
ResourceManager per l’intero cluster.
Il ResourceManager è un processo master YARN che si occupa di
gestire le risorse del cluster Hadoop e di rispondere alle richieste del
client per la creazione dei container.
La creazione effettiva dei container è 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 al
ResourceManager, che li utilizza per gestire le richieste di nuovi
container
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
24 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache 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 al
ResourceManager di creare una nuova istanza di un
ApplicationMaster
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 il
NodeManager per la creazione effettiva dei container
4
Se si verifica un fallimento tra i container dell’applicazione, il
ResourceManager invia un messaggio all’ApplicationMaster, che
decide come gestire l’evento
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
25 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Spark: Introduzione
Apache Spark è un framework open-source general-purpose di
calcolo distribuito su cluster, fornisce un’interfaccia che garantisce
durante le computazioni il parallelismo dei dati e la fault-tolerance
Spark è stato sviluppato dall’UC Berkeley nel 2009 e poi donato
all’Apache Software Foundation nel 2013
Spark è stato progettato per velocizzare le computazioni, è basato
su Hadoop MapReduce ma estende il modello MapReduce
permettendo più tipi di computazioni, che includono query
interattive, stream processing e machine learning
Caratteristica principale
Esecuzione dei calcoli in memoria centrale, compresa la memorizzazione
dei risultati intermedi!
Questa caratteristica permette di velocizzare l’esecuzione di una
applicazione
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
27 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Spark: Introduzione
Apache Spark è un framework open-source general-purpose di
calcolo distribuito su cluster, fornisce un’interfaccia che garantisce
durante le computazioni il parallelismo dei dati e la fault-tolerance
Spark è stato sviluppato dall’UC Berkeley nel 2009 e poi donato
all’Apache Software Foundation nel 2013
Spark è stato progettato per velocizzare le computazioni, è basato
su Hadoop MapReduce ma estende il modello MapReduce
permettendo più tipi di computazioni, che includono query
interattive, stream processing e machine learning
Caratteristica principale
Esecuzione dei calcoli in memoria centrale, compresa la memorizzazione
dei risultati intermedi!
Questa caratteristica permette di velocizzare l’esecuzione di una
applicazione
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
27 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Perché scegliere Apache Spark?
Semplicità: tutte le funzionalità di Spark sono accessibili tramite il
suo insieme di API, ben documentato e che permette ai dati di
interagire velocemente e facilmente
Velocità: riduce il numero di operazioni di lettura/scrittura su disco
eseguendo i calcoli e memorizzando i risultati intermedi, in memoria
centrale
Supporta diversi linguaggi: Spark supporta diversi linguaggi di
programmazione come Java, Python, R, and Scala
Analisi avanzate: Spark non supporta solo job MapReduce, ma
anche query SQL, streaming data, machine learning e algoritmi
relativi ai grafi
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
28 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
29 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark: Componenti (1/8)
Spark Core
Spark Core è 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark: Componenti (2/8)
Resilient Distributed Datasets (RDD)
Resilient Distributed Datasets (RDD) è la struttura dati
fondamentale di Spark
E’ una collezione immutabile distribuita di oggetti
Ogni dataset in RDD è diviso in partizioni logiche, che possono
essere computate su diversi nodi del cluster
RDD può contenere oggetti di qualsiasi tipo, Python, Scala, Java,
incluse classi definite dall’utente
RDD è una collezione fault-tolerant di elementi che possono essere
utilizzati in parallelo
Un RDD può essere creato a partire da un dataset esterno
(JSON,HDFS,MySQL,CSV...) o a seguito di manipolazioni di
un’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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark: Componenti(3/8)
Operazioni su RDD
Una volta che il dato è stato memorizzato in un RDD, su di esso saranno
possibili due operazioni:
Trasformazioni: Creazione di un nuovo RDD da un RDD
precedente, attraverso operazioni come mapping, filtering, ed altre
Azioni: Restituiscono al Driver un risultato calcolato a partire da un
RDD, 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
Introduzione
MapReduce
Apache Hadoop
Apache 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 ad
es: HQL)
Permette la lettura da varie sorgenti di dati (tabelle Hive, Parquet,
JSON...)
Permette la combinazione di query in linguaggio SQL con la
manipolazione 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
Introduzione
MapReduce
Apache Hadoop
Apache 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 le
componenti base di Spark Core (RDD)
Progettato per fornire lo stesso grado di tolleranza ai fallimenti,
throughput e scalabilità di Spark Core
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
34 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark: Componenti (6/8)
GraphX
Libreria per la gestione di grafi (ad es. grafi sociali basati sulle
amicizie, 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark: Componenti (7/8)
MLib
Contiene le funzionalità più comuni di machine learning (ML)
Fornisce diversi algoritmi di apprendimento automatico
(classificazione, regressione, clustering...)
Tutti i metodi sono progettati per poter distribuire il calcolo su
cluster di macchine
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
36 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Ambiente Apache Spark: Componenti (8/8)
SparkR
Pacchetto che permette di utilizzare R (linguaggio di
programmazione statistico) in ambiente Spark
Contiene un’implementazione distribuita dei Data Frame di R
(Distributed Data Frame)
Supporta le operazioni di selezione, filtraggio, aggregazione tipiche
di R
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
37 / 41
Big Data
Introduzione
MapReduce
Apache Hadoop
Apache 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
Apache Spark: Architettura (2/3)
Passi per l’esecuzione di un’applicazione Spark
1
Un’applicazione Spark è eseguita come un insieme di processi
indipendenti sul cluster, coordinati dall’oggetto SparkContext
contenuto nel programma principale chiamato Driver Program
2
Lo SparkContext deve connettersi al Cluster Manager che ha il
compito di allocare le risorse
3
Una volta connesso, lo SparkContext avvia gli Executor, processi
responsabili dello svolgimento delle operazioni, all’interno dei Worker
Node
4
Ogni processo Executor, uno per ogni core del processore, è in realtà
una Java Virtual Machine, a cui viene inviato il codice del
programma (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
Introduzione
MapReduce
Apache Hadoop
Apache 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 può anche
eseguire 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
Introduzione
MapReduce
Apache Hadoop
Apache Spark
In conclusione: Benefici di Hadoop e Spark
Spark non è il sostituto di Hadoop, il MapReduce non è morto
Spark non è una versione modificata di Hadoop
Hadoop è solo un modo per implementare Spark, in tal caso Spark
beneficia del Cluster Manager (YARN) e del livello di storage
(HDFS) di Hadoop
Spark però, può anche essere completamente separato da Hadoop,
integrando al suo interno Cluster Manager e piattaforme per lo
storage dei dati alternativi
Quando Spark viene eseguito su Hadoop, Spark, grazie ai suoi
moduli relativi al machine learning, ai grafi, all’SQL, fornisce ad esso
delle funzionalità aggiuntive
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
41 / 41