SlideShare a Scribd company logo
1 of 53
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.
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 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.
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 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:
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

More Related Content

Viewers also liked

Hadoop Perspectives for 2017
Hadoop Perspectives for 2017Hadoop Perspectives for 2017
Hadoop Perspectives for 2017Precisely
 
Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...
Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...
Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...Matteo Brunati
 
Python advanced 20-classioggetti-sintesi
Python advanced 20-classioggetti-sintesiPython advanced 20-classioggetti-sintesi
Python advanced 20-classioggetti-sintesiStudiabo
 
Web advanced-03-d3 js-base
Web advanced-03-d3 js-baseWeb advanced-03-d3 js-base
Web advanced-03-d3 js-baseStudiabo
 
Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...
Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...
Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...Andrea Albanese
 
Analisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trendAnalisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trendAndrea Marchetti
 
Hadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativiHadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativilostrettodigitale
 
Big data e pubblica amministrazione
Big data e pubblica amministrazioneBig data e pubblica amministrazione
Big data e pubblica amministrazioneGianfranco Andriola
 
Web advanced-10-svg
Web advanced-10-svgWeb advanced-10-svg
Web advanced-10-svgStudiabo
 
Big Data: Analisi del Sentiment
Big Data: Analisi del SentimentBig Data: Analisi del Sentiment
Big Data: Analisi del SentimentMiriade Spa
 
2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...
2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...
2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...Jürgen Ambrosi
 
Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho Uday Kothari
 
Come diventare data scientist - Paolo Pellegrini
Come diventare data scientist - Paolo PellegriniCome diventare data scientist - Paolo Pellegrini
Come diventare data scientist - Paolo PellegriniDonatella Cambosu
 
Adobe spark video oluşturma aracı
Adobe spark video oluşturma aracıAdobe spark video oluşturma aracı
Adobe spark video oluşturma aracıNurcan Ari
 
7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...
7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...
7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...Jürgen Ambrosi
 

Viewers also liked (18)

Hadoop Perspectives for 2017
Hadoop Perspectives for 2017Hadoop Perspectives for 2017
Hadoop Perspectives for 2017
 
Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...
Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...
Big Data, Open Data e AppsforItaly: i dati come conversazione importano alle ...
 
Python advanced 20-classioggetti-sintesi
Python advanced 20-classioggetti-sintesiPython advanced 20-classioggetti-sintesi
Python advanced 20-classioggetti-sintesi
 
Web advanced-03-d3 js-base
Web advanced-03-d3 js-baseWeb advanced-03-d3 js-base
Web advanced-03-d3 js-base
 
Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...
Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...
Sda bocconi andrea albanese risultati ricerca Customer experience e social ne...
 
Domino 1 15
Domino 1 15Domino 1 15
Domino 1 15
 
Analisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trendAnalisi e redesign di un social game per l'individuazione di trend
Analisi e redesign di un social game per l'individuazione di trend
 
Hadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativiHadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativi
 
Big data e pubblica amministrazione
Big data e pubblica amministrazioneBig data e pubblica amministrazione
Big data e pubblica amministrazione
 
Big data e Business Intelligence | presentazione open day @Fondazione Kennedy...
Big data e Business Intelligence | presentazione open day @Fondazione Kennedy...Big data e Business Intelligence | presentazione open day @Fondazione Kennedy...
Big data e Business Intelligence | presentazione open day @Fondazione Kennedy...
 
Web advanced-10-svg
Web advanced-10-svgWeb advanced-10-svg
Web advanced-10-svg
 
Big Data: Analisi del Sentiment
Big Data: Analisi del SentimentBig Data: Analisi del Sentiment
Big Data: Analisi del Sentiment
 
2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...
2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...
2 Sessione - Macchine virtuali per la scalabilità di calcolo per velocizzare ...
 
Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho Business Intelligence and Big Data Analytics with Pentaho
Business Intelligence and Big Data Analytics with Pentaho
 
H20 - Thirst for Machine Learning
H20 - Thirst for Machine LearningH20 - Thirst for Machine Learning
H20 - Thirst for Machine Learning
 
Come diventare data scientist - Paolo Pellegrini
Come diventare data scientist - Paolo PellegriniCome diventare data scientist - Paolo Pellegrini
Come diventare data scientist - Paolo Pellegrini
 
Adobe spark video oluşturma aracı
Adobe spark video oluşturma aracıAdobe spark video oluşturma aracı
Adobe spark video oluşturma aracı
 
7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...
7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...
7° Sessione - L’intelligenza artificiale a supporto della ricerca, servizi di...
 

Similar to Google Dev Fest 2016 - Roma

PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016Miriade Spa
 
MySQL Tech Tour 2016 - Panoramica sul progetto Openstack
MySQL Tech Tour 2016 - Panoramica sul progetto OpenstackMySQL Tech Tour 2016 - Panoramica sul progetto Openstack
MySQL Tech Tour 2016 - Panoramica sul progetto OpenstackPar-Tec S.p.A.
 
Drupal in the Cloud
Drupal in the CloudDrupal in the Cloud
Drupal in the CloudTwinbit
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteMirco Sbrollini
 
Predictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTPredictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTMarco Parenzan
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - TigerMatteo Baccan
 
Panoramica sul progetto OpenStack
Panoramica sul progetto OpenStackPanoramica sul progetto OpenStack
Panoramica sul progetto OpenStackPar-Tec S.p.A.
 
Monitoraggio della rete con cacti
Monitoraggio della rete con cactiMonitoraggio della rete con cacti
Monitoraggio della rete con cactidalegiuseppe
 
Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009Giuseppe Agrillo
 
Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...
Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...
Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...Par-Tec S.p.A.
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Riccardo Zamana
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernosparkfabrik
 
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...DavideFegez
 

Similar to Google Dev Fest 2016 - Roma (20)

PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
 
Hug Italy- 30 Sept 2014, Milan
Hug Italy- 30 Sept 2014, MilanHug Italy- 30 Sept 2014, Milan
Hug Italy- 30 Sept 2014, Milan
 
Appunti di big data
Appunti di big dataAppunti di big data
Appunti di big data
 
MySQL Tech Tour 2016 - Panoramica sul progetto Openstack
MySQL Tech Tour 2016 - Panoramica sul progetto OpenstackMySQL Tech Tour 2016 - Panoramica sul progetto Openstack
MySQL Tech Tour 2016 - Panoramica sul progetto Openstack
 
Erlug
ErlugErlug
Erlug
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
Drupal in the Cloud
Drupal in the CloudDrupal in the Cloud
Drupal in the Cloud
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincente
 
Predictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoTPredictive Maintenance per le aziende del nord-est con Azure e IoT
Predictive Maintenance per le aziende del nord-est con Azure e IoT
 
RomaJS June 2022
RomaJS June 2022RomaJS June 2022
RomaJS June 2022
 
javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
 
Panoramica sul progetto OpenStack
Panoramica sul progetto OpenStackPanoramica sul progetto OpenStack
Panoramica sul progetto OpenStack
 
Monitoraggio della rete con cacti
Monitoraggio della rete con cactiMonitoraggio della rete con cacti
Monitoraggio della rete con cacti
 
Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009Agrillo Fedora 11 release party 18 giugno 2009
Agrillo Fedora 11 release party 18 giugno 2009
 
Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...
Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...
Open Source Day 2017 - Caso cliente: uno stack cloud completo al servizio del...
 
Hadoop in action!
Hadoop in action!Hadoop in action!
Hadoop in action!
 
Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti Industrial iot: dalle parole ai fatti
Industrial iot: dalle parole ai fatti
 
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
 
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
 
Progetto Netkit
Progetto NetkitProgetto Netkit
Progetto Netkit
 

Google Dev Fest 2016 - Roma

  • 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
  • 14. Copyright 2015 CATENATE Group – All rights reserved BIGDATA 2.0 - SPARK
  • 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.
  • 24. Copyright 2015 CATENATE Group – All rights reserved BIGDATA 2.0 - INFRASTRUTTURA
  • 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.
  • 30. 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
  • 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
  • 52. Copyright 2015 CATENATE Group – All rights reserved CONCLUSIONI - Q&A
  • 53. Copyright 2015 CATENATE Group – All rights reserved