google dev fest 2016 - roma

53
Copyright 2015 CATENATE Group – All rights reserved Spark Lab Google DevFest 2016 Gabriele Nocco, Senior Data Scientist [email protected] Catenate s.r.l.

Upload: gabriele-nocco

Post on 22-Jan-2018

306 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

Spark LabGoogle DevFest 2016

Gabriele Nocco, Senior Data [email protected]

Catenate s.r.l.

Page 2: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

● Introduzione Universo BigData

● BigData 2.0 - Spark, SparkQL, MLLib e GraphX

● Esercitazione Pratica

● Conclusioni

2

AGENDA

Page 3: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

● Introduzione Universo BigData

● BigData 2.0 - Spark, SparkQL, MLLib e GraphX

● Esercitazione Pratica

● Conclusioni

3

AGENDA

Page 4: Google Dev Fest 2016 - Roma

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

Page 5: Google Dev Fest 2016 - Roma

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).

Page 6: Google Dev Fest 2016 - Roma

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.

Page 7: Google Dev Fest 2016 - Roma

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

Page 8: Google Dev Fest 2016 - Roma

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.

Page 9: Google Dev Fest 2016 - Roma

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.

Page 10: Google Dev Fest 2016 - Roma

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.

Page 11: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

INTRODUZIONE UNIVERSO BIGDATA - E CHI CHIAMERAI???

E chi chiamerai???

Page 12: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

● Introduzione Universo BigData

● BigData 2.0 - Spark, SparkQL, MLLib e GraphX

● Esercitazione Pratica

● Conclusioni

12

AGENDA

Page 13: Google Dev Fest 2016 - Roma

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

Page 14: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

BIGDATA 2.0 - SPARK

Page 15: Google Dev Fest 2016 - Roma

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/

Page 16: Google Dev Fest 2016 - Roma

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

Page 17: Google Dev Fest 2016 - Roma

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

Page 18: Google Dev Fest 2016 - Roma

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

Page 19: Google Dev Fest 2016 - Roma

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!!)

Page 20: Google Dev Fest 2016 - Roma

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

Page 21: Google Dev Fest 2016 - Roma

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

Page 22: Google Dev Fest 2016 - Roma

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

Page 23: Google Dev Fest 2016 - Roma

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.

Page 24: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

BIGDATA 2.0 - INFRASTRUTTURA

Page 25: Google Dev Fest 2016 - Roma

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.

Page 26: Google Dev Fest 2016 - Roma

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

Page 27: Google Dev Fest 2016 - Roma

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.

Page 28: Google Dev Fest 2016 - Roma

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.

Page 29: Google Dev Fest 2016 - Roma

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.

Page 30: Google Dev Fest 2016 - Roma

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

Page 31: Google Dev Fest 2016 - Roma

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:

Page 32: Google Dev Fest 2016 - Roma

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:

Page 33: Google Dev Fest 2016 - Roma

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:

Page 34: Google Dev Fest 2016 - Roma

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:

Page 35: Google Dev Fest 2016 - Roma

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:

Page 36: Google Dev Fest 2016 - Roma

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.

Page 37: Google Dev Fest 2016 - Roma

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.

Page 38: Google Dev Fest 2016 - Roma

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

Page 39: Google Dev Fest 2016 - Roma

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

Page 40: Google Dev Fest 2016 - Roma

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.

Page 41: Google Dev Fest 2016 - Roma

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

Page 42: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

● Introduzione Universo BigData

● BigData 2.0 - Spark, SparkQL, MLLib e GraphX

● Esercitazione Pratica

● Conclusioni

42

AGENDA

Page 43: Google Dev Fest 2016 - Roma

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/

Page 44: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

ESERCITAZIONE - DATABRICS

Creazione cluster:

Page 45: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

ESERCITAZIONE - DATABRICS

Importazione del notebook:

Page 46: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

ESERCITAZIONE - DATABRICS

Associare il cluster creato ed esegui i blocchi del notebook:

Page 47: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

ESERCITAZIONE - DATABRICS

Vedere i Job eseguiti, con statistiche di elaborazione, performance e DAG generato:

Page 48: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

ESERCITAZIONE - DATABRICS

Import delle librerie necessarie:

Page 49: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

● Introduzione Universo BigData

● BigData 2.0 - Spark, SparkQL, MLLib e GraphX

● Esercitazione Pratica

● Conclusioni

49

AGENDA

Page 50: Google Dev Fest 2016 - Roma

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

Page 51: Google Dev Fest 2016 - Roma

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

Page 52: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved

CONCLUSIONI - Q&A

Page 53: Google Dev Fest 2016 - Roma

Copyright 2015 CATENATE Group – All rights reserved