1. Copyright 2015 CATENATE Group – All rights reserved
Spark Lab
Google DevFest 2016
Gabriele Nocco, Senior Data Scientist
gabriele.nocco@catenate.com
Catenate s.r.l.
2. Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
2
AGENDA
3. Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
3
AGENDA
4. Copyright 2015 CATENATE Group – All rights reserved
Google è senza dubbio una delle principali
fonti di risposte a qualsiasi domanda noi
possiamo porci!
Come fa a decidere quale risposta sia la
migliore?
INTRODUZIONE UNIVERSO BIGDATA - DOMANDE
5. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - BIGDATA
Che cos’è BigData? Cosa si intende?
Tecnicamente si comincia a parlare di BigData per qualsiasi mole di dati non entri su una singola
macchina. Comunemente si comincia a parlare di dati veramente big quando si sta sull’ordine di
Petabyte (1025 TB).
6. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - DATI
● La centralità del dato è
ormai una priorità per tutte
le aziende. Le informazioni
sono reperibili ovunque ed in
ogni momento.
● Le informazioni sono un bene
non contabilizzabile che però
conferisce potere a chiunque
le possegga. Tramite le
informazioni si riesce ad
essere più incisivi nel proprio
mercato.
7. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - OPPORTUNITÀ
Conoscere la propria
customer base amplia le
possibilità di soddisfarla
e di proporle nuovi
prodotti.
Un sistema di
recommendation
raffinato è alla base di e-
commerce o di
networking
8. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - IOT
IOT (Internet Of Things) è uno dei filoni più
innovativi del panorama informatico degl’ultimi
anni.
Ogni oggetto intorno a noi si connette al mondo e
raccoglie informazioni per aumentare la propria
funzionalità e migliorare l’esperienza di utilizzo.
Ogni dispositivo deve avere coscienza del suo
stato e dell’ambiente in cui si trova e tutte queste
rilevazioni generano a loro volta dati.
9. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - PROSPETTIVE
Nei prossimi anni si prevede una crescita esponenziale dei dati prodotti da fonti non Enterprise, con Social
Network e sensoristica. È previsto che nei prossimi due anni il numero dei dispositivi IOT connessi in rete
sarà maggiore del numero di Pc, Smartphone e Tablet.
10. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - LE TRE “V”
Se consideriamo la dimensione di tutti i dati
generati nel mondo dagli albori dell’informatica
fino al 2008, questo ammontare è stato eguagliato
da quando è stata visualizzata questa slide!!!
Le nuove tecnologie ci permettono di analizzare i
dati durante la loro generazione, senza che questi
vengano neanche salvati su una base dati.
Più dell’80% dei dati generati fino ad ora sono non
strutturati: messaggi, video, immagini o suoni.
Nuove strutture dati ci permettono di mettere in
relazione tutte queste fonti.
11. Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - E CHI CHIAMERAI???
E chi chiamerai???
12. Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
12
AGENDA
13. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - MAPREDUCE
Tutto questo può andare bene per delle esecuzioni dirette,
ma un qualsiasi loop rende pesante il ciclo applicativo. Ad
ogni passo infatti tutte le informazioni vengono persistite
sull’HDFS, con tutto quello che ne segue
15. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK
Sviluppato inizialmente dai laboratori dell’università di Berkeley nel 2009, e reso
completamente open source nel 2010. Scritto in Scala, espone API in Scala, Java, Python e
R.
Spark è universalmente riconosciuto il futuro del mondo BigData, tutto l’ecosistema
Hadoop sta migrando da un engine MapReduce a Spark.
http://spark.apache.org/
16. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK
Facile da Sviluppare Veloce da Eseguire
● Ricche API in Java, Scala, Python e
ultimamente anche R
● shell interattiva (non va compilato
codice MapReduce)
● lavora in memory
● grafo di elaborazione workflow
gestiti secondo DAG
17. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - RDD
Spark gira molto intorno a l’’oggetto RDD (Resilient Distributed Dataset),
che rappresenta un dataset di elementi immutabile, tollerante ai
fallimenti. Può essere distribuito in memory o su file system.
Ci sono due tipi di operazioni che si possono fare sugli RDD:
● Trasformazioni
● Azioni
18. Copyright 2015 CATENATE Group – All rights reserved
DATANODE
BIGDATA 2.0 - TOPOLOGIA
MASTER:
SPARK CONTEXT
EXECUTOR
DATANODE
EXECUTOR
DATANODE
EXECUTOR
Il Master è un processo sulla JVM
(che il codice sia in Java o in Scala)
che coordina l’esecuzione di tutto
il programma. A seconda delle
varie modalità di esecuzione di
Spark varierà la JVM che ospiterà
il processo e di conseguenza le
sue impostazioni di default.
Lui si preoccuperà lanciare i vari
Executor disseminati lungo i
DataNode, si preocuperà di
gestire il ciclo di elaborazioni che
essi eseguono, eventualmente
rilanciando lo stretto necessario
in caso di fault.
Nel caso di pySpark la topologia
sarà la stessa ma su ogni
macchina ci sarà un traduttore dal
processo python verso la JVM
19. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - MODALITÀ
Si può eseguire Spark in 4 modalità differenti:
● local (tutti i thread verranno gestiti sulla stessa JVM)
● standalone (usando il job-scheduler interno)
● Mesos (popolare framework di computazione in cluster, opensource)
● YARN (Hadoop 2.0!!)
20. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - TRASFORMAZIONI
Come suggerisce il nome questi tipi di operazione restituiscono un nuovo RDD applicando le
modifiche all’RDD di partenza. Tutti questi comandi fanno rimanere i dati all’interno degli Executor.
● map
● filter
● distinct
● union
● join
● sample
● groupByKey
● repartition
● etc..
● cartesian
http://spark.apache.org/docs/latest/programming-guide.html#transformations
21. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - TRASFORMAZIONI
Ci sono due tipi di Trasformazioni: Narrow e Wide. Queste differiscono dall’uso dello shuffle.
EXECUTOR
EXECUTOR
EXECUTOR
NARROW
RDD
RDD
RDD
EXECUTOR
EXECUTOR
EXECUTOR
WIDE
RDD
RDD
RDD
22. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - AZIONI
Le Azioni sono operazioni che vanno ad utilizzare l’RDD per estrarre particolari informazioni da esso.
Queste riportano il dato sul processo Master.
● foreach
● collect
● count
● countByKey
● first
● take
● takeSample
● takeOrdered
● etc..
● saveAsTextFile
http://spark.apache.org/docs/latest/programming-
guide.html#actions
23. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - DAG
Lo scheduling dei task viene fatto in base a dove sono memorizzati i file,
per evitare il più possibile di trasferirli in rete. Se un nodo fallisce, lo
scheduling in un altro nodo viene fatto partire automaticamente dalla
piattaforma, e si ricalcolano solo i dati persi.
A run-time Spark converte ogni programma in un insieme di mini task. Le operazioni di trasformazione
vengono effettuate solo nel momento del bisogno, cioè quando si richiede un risultato.
Ogni programma Spark è strutturato genericamente in questo modo:
● si leggono i dati da disco in uno o più RDD
● si trasformano gli RDD
● si applica una azione recuperandone il risultato
Spark memorizza un grafo aciclico diretto (DAG) delle operazioni da fare
per ottenere il risultato desiderato. Le operazioni di trasformazione o di
salvataggio/recupero di dati vengono trasformate in una serie di stage
eseguiti in sequenza, ognuno dei quali è composto da un insieme di task
che vengono eseguiti dagli executor.
25. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK SQL
Spark sta diventando l’engine SQL ufficiale di HIVE, grazie anche a questa libreria che permette di
interrogare con query HiveQL sia le tabelle già esistenti, sia file sull’HDFS ed RDD già presenti sul
contesto. Ha preso il posto anche del vecchio progetto Shark.
Nelle ultime versioni di Spark abbiamo l’introduzione di un oggetto che reppresenta un wrapper del
semplice RDD, ovvero il DataFrame. Un DataFrame è una tabella fatta di colonne con nome,
aderente a quanto si ha in linguaggi come R o Python.
26. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK SQL
La sintassi usata da Apache Hive e chiamata HiveQL, ed è il dialetto sql usato da SparkSQL.
http://hortonworks.com/wp-content/uploads/downloads/2013/08/Hortonworks.CheatSheet.SQLtoHive.pdf
27. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK STREAMING
Spark Streaming è una libreria per l’esecuzione di
micro-batch, a metà tra il batch e lo streaming puro,
in cui in ogni finestra temporale viene fornito un
piccolo RDD (o un DataFrame) all’applicativo Spark
che potrà gestirlo e trasformarlo.
28. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK STREAMING
Quello che succede di solito in una infrastruttura che richiede una esecuzione (near) realtime è che si
posiziona un gestore delle code prima della componente di Streaming, così da modulare l’arrivo del flusso
di dati e non appesantire la macchina che esegue il calcolo.
29. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB
Uno dei progetti più interessanti dell’ecosistema Spark è senza dubbio MLLib, una libreria di Machine
Learning in Scala, Java e Python.
Nelle ultime versioni è in atto una migrazione del
supporto degli algoritmi dagli RDD ai DataFrame
(provenienti da Spark SQL). Ci sono quindi due package
distinti, spark.mllib (per gli RDD) e spark.ml (per i
DataFrame), il primo cadrà via via in dismissione.
Questa libreria stava per diventare l’engine di calcolo
anche per Mahout, ma ne ha preso a tutti gli effetti il
posto abbandonandolo.
31. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB: KMEANS
KMeans
Algoritmo che permette di suddividere un dataset di
n osservazioni in k cluster, individuando dei k
centroidi e minimizzando iterativamente la distanza
delle osservazioni dai centroidi.
● Inizializzare i centroidi
● ripetere fino a convergenza:
○ per ogni elemento si ricalcola il centroide da associargli
○ per ogni centroide si ricolloca in base alla media degli elementi ad esso associati
Algoritmo:
32. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB: ALS
ALS
Alternating Least Squares (ALS) è un algoritmo di
calcolo matriciale in cui si riescono ad individuare gli
elementi mancanti, quindi è particolarmente adatto per
le recommandation.
● si alterna fissando U e M.
Fissando U si aggiorna M
risolvendo un problema di minimi
quadrati, e viceversa fissando M.
Algoritmo
:
33. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB: SVM
SVM
Uno degli algoritmi supervisionati più diffusi per la
classificazione logistica, le Support Vector Machines
sono volte a trovare un iper-piano che sconnetta le
osservazioni tra “good” e “bad” e massimizzare la
distanza dei punti dall’iper-piano stesso.
● risolvere il problema di ottimizzazione convessa
Algoritmo
:
34. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB: MULTILAYER PERCEPTRON
Multilayer Perceptron
Dalla versione 1.5 di Spark troviamo finalmente le reti neurali, che erano
impensabili nel paradigma MapReduce. In particolare l’algoritmo di
addestramento del metodo implementato da Spark è la BackPropagation.
● l’output di ogni nodo è dipendente dalla combinazione lineare
degl’output dei nodi precedenti, quindi l’errore che è calcolabile nello
strato finale viene propagato negli strati precedenti, aggiustando i pesi
della rete fino al raggiungimento di un punto di minimo della superficie
di errore usando metodi di ricerca del minimo come il gradiente
discendente:
Algoritmo
:
35. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB: PCA
PCA
PCA (Principal Component Analysis) è uno degli algoritmi più diffusi in ambito scientifico per la
riduzione della dimensionalità e per il preprocessing dei dati. Fa si che ci si possa restringere allo
studio di variabili, iniziali o calcolate, che massimizzano la varianza e che quindi meglio caratterizzano
il dataset.
● sostanzialmente l’algoritmo consiste nel cercare, dato k, di
ortogonalizzare una matrice associata al dataset, per poi prendere in
considerazione come nuove direzioni solo i k autovettori con autovalori
più alti.
Algoritmo
:
36. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB: PIPELINE
PIPELINE
Le Pipeline sono il modo con cui nelle ultime versioni di Spark si riesce ad unificare tutto il processo di
apprendimento, dall’ingestion, alle trasformazioni, fino si modelli, in un unico oggetto.
Risulta tutto particolarmente utile nei processi di tuning
dei metaparametri del modello, nonché di selezione del
modello meglio performante.
37. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK GRAPHX
Componente per il calcolo parallelo e distribuito sui grafi, estende l’RDD attragerso una
astrazione chiamata appunto Graph, gestendo nodi e spigoli. Libreria molto interessante e
con discreta prospettiva.
Insieme a Oracle e a Neo4j siede in prima fila al tavolo che sta delineando un nuovo standard
di interrogazione sui grafi, un query language che dovrebbe chiamarsi OpenCypher.
38. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK GRAPHX
● Traverse
● Grado dei nodi (uscente, entrante e bidirezionale)
● Operazioni sui vicini
● Calcolo Componenti Connesse
● Sottografi
● PageRank
39. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK GRAPHX: PAGERANK
Algoritmo per l’assegnazione di un rank ad ogni nodo.
● PR(A) sta per il ranking del nodo A che vogliamo calcolare
● d è il cosiddetto Damping factor: è un fattore che indica la
probabilità che un visitatore decida di passare ad un altro nodo;
alzando il valore d si abbasserà il valore del ranking totale del nodo
● PR(P1), PR(P2),... rappresentano i valori di ranking di P1, P2,... etc
● C(P1), C(P2) il numero complessivo di link uscenti dal nodo
40. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - ALTRI STREAM DI PROGETTO
SparkR è un package R che permette l’uso di Apache Spark da R. In Spark
1.5.0, SparkR prevede una implementazione di un Data Frame distribuito
che permette l’uso di funzioni come select, filter, aggregation etc. ma su
grandi dataset. SparkR supporta anche il machine learning distribuito
usando MLlib.
41. Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - ALTRI STREAM DI PROGETTO
Altri progetto molto interessanti sono Spark Job Server e Livy, componenti che
provvedono ad una interfaccia REST per la gestione e l’elaborazione dei programmi
Spark.
Attraverso questo strumento, programmi di terze parti (ad esempio come KNIME o
HUE), riescono ad interfacciarsi con Spark e sfruttare la sua potenza di calcolo
distribuito.
SPARK JOB SERVER / LIVY
42. Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
42
AGENDA
43. Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Databricks è una società creata dai fondatori di Spark e rappresenta uno dei maggiori
contributor del progetto open source.
Tramite Databricks è possibile accedere alle funzionalità di Spark tramite la comodità
del cloud, riuscendo a creare un vero e proprio cluster con pochi click.
DATABRICKS
La seguente esercitazione è presa dal MOOC distribuito da EdX, “Introduction to
Spark” disponibile al link:
https://courses.edx.org/courses/course-v1:BerkeleyX+CS105x+1T2016/
44. Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Creazione cluster:
45. Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Importazione del notebook:
46. Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Associare il cluster creato ed esegui i blocchi del notebook:
47. Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Vedere i Job eseguiti, con statistiche di elaborazione, performance e DAG generato:
48. Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Import delle librerie necessarie:
49. Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
49
AGENDA
50. Copyright 2015 CATENATE Group – All rights reserved
Abbiamo:
● Costruito un cluster in cloud di Spark
● Creato il nostro primo notebook in pySpark
● Fatto data ingestion
● Pulito i nostri dati
● Scritto delle funzioni che eseguono il conteggio delle parole
● Reso condivisibile il nostro lavoro!
CONCLUSIONI
51. Copyright 2015 CATENATE Group – All rights reserved
Google è senza dubbio una delle principali
fonti di risposte a qualsiasi domanda noi
possiamo porci!
Come fa a decidere quale risposta sia la
migliore?
CONCLUSIONI