google dev fest 2016 - roma
TRANSCRIPT
Copyright 2015 CATENATE Group – All rights reserved
Spark LabGoogle DevFest 2016
Gabriele Nocco, Senior Data [email protected]
Catenate s.r.l.
Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
2
AGENDA
Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
3
AGENDA
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
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).
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.
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
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.
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.
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.
Copyright 2015 CATENATE Group – All rights reserved
INTRODUZIONE UNIVERSO BIGDATA - E CHI CHIAMERAI???
E chi chiamerai???
Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
12
AGENDA
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
Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK
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/
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
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
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
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!!)
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
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
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
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 trasformazionevengono 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.
Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - INFRASTRUTTURA
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.
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
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.
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.
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.
Copyright 2015 CATENATE Group – All rights reserved
BIGDATA 2.0 - SPARK MLLIB
● Statistica: Descrittive, Correlazioni
● Clustering: KMeans
● Collaborative Filtering: ALS
● Classificazione: SVM, neive Bayes, Decision Tree, Multi-layer Perceptron
● Regressione: Regressione Lineare, Regressione Logistica
● Riduzione Dimensionalità: PCA, SVD
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 kcentroidi 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:
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:
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:
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:
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:
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.
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.
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
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
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.
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
Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
42
AGENDA
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/
Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Creazione cluster:
Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Importazione del notebook:
Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Associare il cluster creato ed esegui i blocchi del notebook:
Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Vedere i Job eseguiti, con statistiche di elaborazione, performance e DAG generato:
Copyright 2015 CATENATE Group – All rights reserved
ESERCITAZIONE - DATABRICS
Import delle librerie necessarie:
Copyright 2015 CATENATE Group – All rights reserved
● Introduzione Universo BigData
● BigData 2.0 - Spark, SparkQL, MLLib e GraphX
● Esercitazione Pratica
● Conclusioni
49
AGENDA
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
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
Copyright 2015 CATENATE Group – All rights reserved
CONCLUSIONI - Q&A
Copyright 2015 CATENATE Group – All rights reserved