2. Cosa è Big Data
La gestione dei dati può comportare query su dati strutturati all’interno di database di
grandi dimensioni, oppure ricerche su file system distribuiti od infine operazioni di
manipolazione, visualizzazione, trasferimento e cancellazione di file e directory
distribuite su più server.
L’analisi computazionale comporta lo sviluppo di metodi ed algoritmi scalabili per la
gestione e l'analisi di Big Data. Per scalabilità, intendiamo metodi che rimangono
veloci, flessibili ed efficienti anche quando la dimensione dell'insieme di dati cresce.
L'analisi dei dati e la modellazione può comportare la riduzione dimensionale, la
suddivisione (clustering), la classificazione (ranking), la previsione e la possibilità di
future estrazioni.
La Visualizzazione può coinvolgere modalità grafiche che forniscono informazioni su
grandi quantità di dati, ricchi di informazioni visive con riepiloghi dei risultati, dove
l’analisi visuale talvolta è il momento stesso in cui i dati vengono valutati.
3. Le 3V – varietà, velocità, volume
Varietà: i dati possono essere strutturati e non strutturati, provenienti da sorgenti
interne, esterna o pubbliche
Velocità: di generazione, di acquisizione, di processamento e gestione
Volume: la quantità dei dati prodotti
Da valutare anche
Complessità: intesa come differenti formati, diverse strutture e diverse sorgenti di
provenienza.
Valore: costo del dato, sia la produzione, l’immagazzinamento e talvolta l’acquisto.
La veridicità del dato: è importante chi certifica il dato.
Il BIG DATA di oggi sarà il LITTLE DATA di domani (tutto dipende dalla capacità
computazionale a disposizione)
4. Big Data Analytics
Analitico : è la scoperta di modelli significativi all’interno dei dati (meangiful
pattern)
Le analisi analitiche possono portare a riconoscere modelli di dati che possono
essere utili per predire eventi futuri oppure spiegare eventi passati
ad esempio l’incrocio di banche dati fiscali è servito a rintracciare comportamenti
fraudolenti
Invece l’analisi dei comportamenti utente su un sevizio di WEB-TV o IP-TV, serve
a predire le loro abitudine televisive
Per approfondire:
http://stattrak.amstat.org/2014/07/01/bigdatasets/
6. Come affrontare BIG DATA
L’esplosione della produzione ed immagazzinamento di dati che si è avuto negli
ultimi venti anni ha portato allo sviluppo di molteplici metodologie, algoritmi e
tecnologie per affrontare queste problematiche
Big data analytics: l’utilizzo di algoritmi matematici, statistiche e machine learning
(apprendimento evolutivo di sistemi computazionali) per analizzare dati prodotti
sempre con maggiore velocità, varietà, volume e complessità
Big models: sviluppo di nuove teorie e metodi che si basano su modelli finalizzati
all’utilizzo ed interpretazione del dato
New Insights: provvedere a ridurre le differenze tra teoria e pratica fornendo
soluzioni che offrono un modello collaborativo tra organizzazioni interconnesse e
multidisciplinari
7. GESTIRE BIG DATA CON HADOOP
SQL, HADOOP e MAP REDUCE sono tre strumenti comuni per gestire grandi
quantità di dati
HADOOP si compone di diversi tool
HDFS (HADDOP DISTRIBUTED FILE SYSTEM) è un file system distribuito su cluster
o su cloud
HADOOP MAP REDUCE è un pattern per analizzare dati in ambienti cloud
APACHE PIG è un framework costruito in ambiente HADOOP (per scherzare si
può dire che come un maiale mangia dati e produce report e non si butta via
niente)
APACHE SPARK è un motore di ricerca per processare dati distribuiti in larga scala
8. Apache Hadoop
Apache Hadoop è un framework che consente l'elaborazione distribuita di grandi
insiemi di dati attraverso cluster di servers, oppure sui servizi di cloud computing,
come Amazon Elastic Compute Cloud (EC2). Questo è possibile attraverso
l’utilizzo di modelli di programmazione semplici. È stato progettato per scalare
da singolo server a migliaia di macchine distribuite, ognuna delle quali offre
capacità di calcolo e di immagazzinamento. Rileva e gestisce gli errori a livello di
strato applicativo.
I suoi principali componenti sono
HDFS
MAP REDUCE
9. Confronto MAP REDUCE - SQL
HADOOP può gestire sia dati strutturati che non strutturati
Se lavori con dati strutturati le due tecnologie sono complementari, in quanto
SQL si può utilizzare su HADOOP come motore di ricerca
Mentre HADOOP lavora su cluster esistenti (ad esempio raccogliendo file di log
da batterie di server) per avere un RDBMS relazionale devi comprare un
Hardware apposito
Hadoop utilizza il principio key-value invece della relazione fra tabelle
SQL è un linguaggio dichiarativo di alto livello mentre MAP REDUCE si basa su
linguaggi funzionali
10. Come funziona HDFS
Blocchi: un file in ingresso viene suddiviso in blocchi e salvato su più nodi cluster
Ogni blocco è scritto una solo volta e può essere processato attraverso MAP
REDUCE framework
I dati sono automaticamente replicati in caso di problemi
I nodi si dividono in nodi nome e nodi data
Sui nodi nome è annotato a che file appartiene e dove è salvato il blocco
Sui nodi data sono salvati i blocchi
11. L’ecosistema del BIG DATA
I BIG DATA presentano diverse framework, librerie, strumenti e piattaforme con cui
poter operare
Frameworks: Hadoop Ecosystem, Apache Spark, Apache Storm, Apache Pig,
Facebook Presto
Patterns: Map Reduce, Actor Model, Data Pipeline
Piattoforme: Cloudera, Pivotal, Amazon Redshift, Google Compute Engine,
Elastichsearch
Tra questi sottolineiamo
Apache Mahout: una libreria per machine learning e data mining
Apache Pig: un linguaggio di alto livello ed un framework per l’analisi di flussi dati e
calcolo parallelo
Apache Spark: un motore di ricerca veloce per Hadoop. Spark fornisce un semplice
modello di programmazione che supporta diverse tipologie di applicazioni tra cui ETL
(Extract, Transform, Load), machine learning, stream processing e calcolo di grafici.
12. DATA SCHEMA
I dati possono essere acquisiti in vari formati strutturati,
non strutturati, testo, binari, ….
Hadoop utilizza una nuova gestione del dato chiamato
schema: lo schema è un insieme di istruzioni o un
template che a partire dal dato immagazzinato tira fuori
un risultato da mostrare all’utente finale o da sottoporre
a nuove trasformazioni
Rispetto all’immagazzinamento relazionale il dato viene
salvato una sola volta e quello che cambia è la
visualizzazione che ne viene prodotta verso l’utente
finale
Schema possono utilizzare molti modelli computazionali
come ad esempio le reti neurali, la logica fuzzy, ..
13. Il modello MAP REDUCE (map reduce
pattern)
Si compone di tre fasi
MAPPA (Map)
Rimescola (Shuffle)
Riduci (Reduce)
Nel video della pagina seguente questi fasi sono presentate per un algoritmo che
calcolo quante volte un anno è presente in un file immagazzinato in HDFS. Il file
è diviso in più blocchi, ognuno salvato su un differente nodo.
Si vuole sapere quante volte ad esempio il 2002 è citato
15. Apache PIG
Apache PIG si basa su HDFS e Map Reduce
Può processare dati in ogni formato tabellare, tab separetd, formati nativi. Possono
essere aggiunte primitive per il processamento dei dati
Operazioni sui dati: relazionali, cartelle nidificate, semistrutturati, destrutturati
Può girare su macchina singola, in pseudo-cluster, cluster o in ambiente cloud
Fornisce un motore di ricerca per effettuare analisi su flussi di dati con le modalità del
calcolo parallelo
Include un linguaggio Latin Pig per eseguire operazioni su i dati
Pig latin include operazioni con Keyword comuni come FILTER, JOIN SORT, GROUP,
FOREACH, LOAD, STORE, … per facilitare l’apprendimento per chi viene da linguaggi
tipo script o SQL
È un linguaggio molto potente che riduce i tempi di sviluppo ed esprime complesse
trasformazioni di dati in poche righe di codice
16. PIG LATIN
Pig LATIN è un linguaggio che permette di descrivere come il dato proveniente
da uno o più input deve essere processato, immagazzinato e veicolato verso uno
o più output.
PIG LATIN è un linguaggio a grafo aciclico diretto (DAG), in altre parole non ha
cicli come l’SQL. Quindi non ci sono istruziono tipo: if, loop, for
PIG LATIN permette di addizionare User Defined Functions (UDF) da altri
linguaggi, questo permette di avere librerie con funzioni per i calcoli statistici e
data mining
Un classico script in PIG Latin si compone di
Un’operazione di LOAD che carica I dati da uno o più sorgenti
Una serie di trasformazioni sul dato (FILTER, GROUP, FOREACH,..)
Un’operazione di STORE che immagazina il risultato finale
Un’operazione di DUMP che mostra il risultato verso l’utente finale
17. Apache SPARK
Spark è un framework open-source. È scritto in Scala che è un linguaggio
funzionale implementato per girare su una Java Virtual machine
Evita colli di bottiglia in quanto il dato è distribuito quando si immagazzina
È simile ad Hadoop Map Reducer in quanto alloca gli ordini di processamento sui
nodi dove il dato è immagazzinato
Può immagazzinare i dati nella memoria dei nodi dato
È molto versatile in quanto può utilizzare una ricca collezione di API fornite
tramite JAVA, SCALA, PYTHON. Dispone anche di shell, scritte in PYTHON e
SCALA
Occorrono meno righe di codice se confrontato con Hadoop MR
In SPARK si possono utilizzare in unico ambiente: SQL, primitive per il flusso dati
ed algoritmi analitici complessi
18. Set di dati distribuiti resilienti (Resilient
Distributed Datasets - RDD)
In ingegneria, la resilienza è la capacità di un materiale di assorbire energia di
deformazione elastica
Ogni driver Spark ha la possibilità di lanciare operazioni in parallelo su un cluster
Il driver è il programma che contiene la funzione main(). Definisce anche quali
sono gli insiemi dei dati dove eseguire le operazioni
Per eseguire le operazioni Spark gestisce un insieme di nodi (esecutori), così le
operazioni verranno eseguite in parallelo su di essi
Il programma Driver per accedere a Spark usa un oggetto SparkContext, che
agisce come connettore verso il cloud. Una volta che viene inizializzato può
iniziare a costruire un RDD (Resilient Distributed Datasets)
19. RDD in Spark
Un RDD è una collezione di elementi distribuita
Spark crea un RDD, oppure lo trasforma, oppure esegue dei calcoli su un RDD
per avere un risultato
Gli RDD sono
Collezioni di oggetti sparsi all’interno di un cluster o di un cloud
Collezioni derivate da trasformazioni ( ad esempio la mappature o la lista estratta
da oggetti immagazzinati in precedenza)
Spark provvede alla capacità di controllare la persistenza di questi oggetti (ad
esempio alcuni possono essere in RAM)
Se alcuni RDD vengono fortuitamente distrutti, Spark provvede a ricostruirli
20. Operazioni SPARK su RDD
Le operazioni che si possono fare in Spark
sugli RDD sono di due tipi
Trasformazioni: da un RDD ritorna un altro
RDD attraverso operazioni tipo map, filter,
join
Azioni: operazioni che ritornano un
risultato o lo immagazzinano come ad
esempio count, reduce, collect.
21. FINE PRESENTAZIONE
Grazie per la cortese attenzione
Fonti. BIG DATA from data to decisions. Queensland University of Technology