Big Data Tech - 2015 - Florence
Technologie Big Data spiegate al Management
Comprendere i concetti del bigdata e gli strumenti che esistono per affrontarli (Nosql, Hadoop/Spark) sono essenziali al management attuale per poter affrontare le sfide di domani.
1. Firenze - 15 Ottobre 2015
presenta Alberto Paro, CTO Big Data Technologies
BIG DATA – Che cosa è?
2. Alberto Paro
Laureato in Ingegneria Informatica (POLIMI)
Lavoro presso Big Data Technologies + Consulting
Autore di due libri su ElasticSearch + 5 Tech review
Lavoro principalmente in Scala e su tecnologie BD
(Akka, Spray.io, Playframework, Apache Spark) e
NoSQL (Cassandra, ElasticSearch e MongoDB)
Evangelist linguaggio Scala e Scala.JS
4. Definizione
L’idea base della frase 'Big Data' è che ogni
cosa che noi facciamo lascia una traccia
digitale (‘data’), che noi (e altri) possiamo
usare e analizzare.
Big Data si riferisce alla nostra abilità di
fare uso di questi volumi di dati che
sempre aumentano.
5. From the dawn of civilization until 2003,
humankind generated five exabytes of
data. Now we produce five exabytes
every two days…and the pace is
accelerating.
Eric Schmidt,
Executive Chairman, Google
6. Definizione
Da dove arrivano questi dati?
Attività “Online”
Comunicazione
Foto e Video
Dati di sensori
The Internet of Things
7. 4 V
L’aumento dei dati porta al big data,
descritto anche con le 4 V:
Volume
Velocity
Variety
Veracity
8.
9. La ‘Datafication’
Actività
Conversazioni
Testo
Voce
Social Media
Browser log
Foto
Video
Sensori
Etc.
Volume
Veracity
Variety
Velocity
Big Data
Analysing :
Text
analytics
Sentiment
analysis
Face
recognition
Voice
analytics
Movement
analytics
Etc.
Valore
Trasformare Big Data in Valore:
10. NoSQL
Ogni database che non è un Database
relazionale”
Il termine fu coniato durante un meet-up
“Non-relational Databases”
Not Only SQL
12. NoSQL
Non esiste il “DB” che copre tutte le
casistiche. Ognuno ha caratteristiche
proprie.
Il mercato sta effettuando “selezione
naturale”
Spesso occorre utilizzare più di un NoSQL.
Hadoop e/o Spark sono il collante.
13. Hadoop / Spark
Input
Iter 1
HDFS
Iter 2
HDFS
HDFS
Read
HDFS
Read
HDFS
Write
HDFS
Write
Input
Iter 1 Iter 2
Hadoop MapReduce
Apache Spark
Evoluzione del modello Map Reduce
14. Apache Spark
Scritto in Scala con API in Java, Python e R
Evoluzione del modello Map/Reduce
Potenti moduli a corredo:
Spark SQL
Spark Streaming
MLLib (Machine Learning)
GraphX (graph)
15. Linguaggio - Scala
Nato da uno degli autori del compilatore di
Java
Interoperabile con Java
Approccio Reattivo
Funzionale + Object Oriented + Actor Model
Concorrenza by design
Strong typed
Linguaggio base di Spark / Akka /
Playframework
16. Linguaggio – Scala vs Javapublic class User {
private String firstName;
private String lastName;
private String email;
private Password password;
public User(String firstName, String lastName,
String email, Password password) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
}
public String getFirstName() {return firstName; }
public void setFirstName(String firstName) { this.firstName = firstName; }
public String getLastName() { return lastName; }
public void setLastName(String lastName) { this.lastName = lastName; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public Password getPassword() { return password; }
public void setPassword(Password password) { this.password = password; }
@Override public String toString() {
return "User [email=" + email + ", firstName=" + firstName + ", lastName=" + lastName + "]"; }
@Override public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((email == null) ? 0 : email.hashCode());
result = prime * result + ((firstName == null) ? 0 : firstName.hashCode());
result = prime * result + ((lastName == null) ? 0 : firstName.hashCode());
result = prime * result + ((password == null) ? 0 : password.hashCode());
return result; }
@Override public boolean equals(Object obj) {
if (this == obj) return true; if (obj == null) return false; if
(getClass() != obj.getClass()) return false; User other = (User) obj; if (email ==
null) { if (other.email != null) return false; } else if
(!email.equals(other.email)) return false; if (password == null) { if
(other.password != null) return false; } else if
(!password.equals(other.password)) return false; if (firstName == null) { if
(other.firstName != null) return false; } else if
(!firstName.equals(other.firstName)) return false; if (lastName == null) { if
(other.lastName != null) return false; } else if
(!lastName.equals(other.lastName)) return false; return true; }
}
case class User(
var firstName:String,
var lastName:String,
var email:String,
var password:Password)
JAVASCALA
17. Scala.JS
Interoperabilità con Javascript
Permette di compilare codice Scala in
Javascript => Typesafe
Riuso di algoritmi/Modelli BK->FE
Sinergia con React.js
Permette lo sviluppo di SPA di grandi
dimensioni
Attività: musica che ascoltiamo, percorso stradale che percorriamo, navigazione web, uso della carta di credito
Communicazione: Facebook e Twitter
Foto e video: youtube
Dati sensori: iwatch, tornelli, …
The internet of things: smartTV, frigoriferi, …
Volume: dato generato: dal big bang al 2008 è pari ora ogni 2 minuti!
Velocity: velocità di propagazione dell’informazione. Social network
Variety: Testo, dati strutturati/non strutturati, grafi. Big data permette di unire questi
Veracity: capacità di gestire dati “disordianti” e non sempre cerificati (hashtag di twitter)
Volume: dato generato: dal big bang al 2008 è pari ora ogni 2 minuti!
Velocity: velocità di propagazione dell’informazione. Social network
Variety: Testo, dati strutturati/non strutturati, grafi. Big data permette di unire questi
Veracity: capacità di gestire dati “disordianti” e non sempre cerificati (hashtag di twitter)
Key Value:
Focus on scaling to huge amounts of data
Designed to handle massive loadBased on Amazon’s Dynamo paperData model: (global) collection of Key-Value pairs
Dynamo ring partitioning and replication
Big Table Clones
Like column oriented Relational Databases, but with a twist
Tables similarly to RDBMS, but handles semi-structured ๏Based on Google’s BigTable paperData model: ‣Columns → column families → ACL
‣Datums keyed by: row, column, time, index ‣Row-range → tablet → distribution
Document
Similar to Key-Value stores,but the DB knows what theValue is
Inspired by Lotus NotesData model: Collections of Key-Value collectionsDocuments are often versioned
GraphDB
Focus on modeling the structure of data – interconnectivity
Scales to the complexity of the dataInspired by mathematical Graph Theory ( G=(E,V) )
Data model: “Property Graph” ‣Nodes ‣Relationships/Edges between Nodes (first class) ‣Key-Value pairs on both‣Possibly Edge Labels and/or Node/Edge Types