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