SlideShare a Scribd company logo
Roma - 24 Febbraio 2016
presenta Alberto Paro, BNova Technical Advisor
Piattaforme per i Big Data
Alberto Paro
 Laureato in Ingegneria Informatica (POLIMI)
 Technical Advisor per BNova
 Autore di due libri su ElasticSearch + 6 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
 Motivazioni
 DataStore NoSQL
 Hadoop/Spark
 Linguaggio Scala
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:
NoSQL - Definizione
 Ogni database che non è un “Database relazionale”
 Il termine fu coniato durante un meet-up
 “Non-relational Databases”
 Not Only SQL
NoSQL - Tipologie
Key-Value
 Redis
 Voldemort
 Dynomite
 Tokio*
BigTable Clones
 Accumulo
 Hbase
 Cassandra
Document
 CouchDB
 MongoDB
 Redis
GraphDB
 Neo4j
 OrientDB
 …Graph
NoSQL - Evolution
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.
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
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)
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
Linguaggio – Scala vs Java
public 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) {
case class User(
var firstName:String,
var lastName:String,
var email:String,
var password:Password)
JAVASCALA
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
Link Utili
 Cassandra: http://cassandra.apache.org/
 MongoDB: https://www.mongodb.org/
 Neo4J: http://neo4j.com/
 Spark: http://spark.apache.org/
 Scala:
 http://scala-lang.org/
 http://www.scala-js.org/
Grazie per
l’attenzione
Alberto Paro
Q&A

More Related Content

Similar to 2016 02-24 - Piattaforme per i Big Data

Similar to 2016 02-24 - Piattaforme per i Big Data (8)

Database NO-SQL: Anything else ?
Database NO-SQL: Anything else ?Database NO-SQL: Anything else ?
Database NO-SQL: Anything else ?
 
Entity Framework 6 for developers, Code-First!
Entity Framework 6 for developers, Code-First!Entity Framework 6 for developers, Code-First!
Entity Framework 6 for developers, Code-First!
 
EcmaScript 6 & 7
EcmaScript 6 & 7EcmaScript 6 & 7
EcmaScript 6 & 7
 
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data AnalysisIntroduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
Introduzione ai Big Data e alla scienza dei dati - Exploratory Data Analysis
 
Back to Basics, webinar 3: Riflessioni sulla progettazione degli schemi nei d...
Back to Basics, webinar 3: Riflessioni sulla progettazione degli schemi nei d...Back to Basics, webinar 3: Riflessioni sulla progettazione degli schemi nei d...
Back to Basics, webinar 3: Riflessioni sulla progettazione degli schemi nei d...
 
Lezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-RLezione 8 - Pratica - Il diagramma E-R
Lezione 8 - Pratica - Il diagramma E-R
 
MS_corso base iOS iPhone_partII
MS_corso base iOS iPhone_partIIMS_corso base iOS iPhone_partII
MS_corso base iOS iPhone_partII
 
Presentazione java7
Presentazione java7Presentazione java7
Presentazione java7
 

More from Alberto Paro

More from Alberto Paro (9)

Data streaming
Data streamingData streaming
Data streaming
 
LUISS - Deep Learning and data analyses - 09/01/19
LUISS - Deep Learning and data analyses - 09/01/19LUISS - Deep Learning and data analyses - 09/01/19
LUISS - Deep Learning and data analyses - 09/01/19
 
2018 07-11 - kafka integration patterns
2018 07-11 - kafka integration patterns2018 07-11 - kafka integration patterns
2018 07-11 - kafka integration patterns
 
Elasticsearch in architetture Big Data - EsInADay-2017
Elasticsearch in architetture Big Data - EsInADay-2017Elasticsearch in architetture Big Data - EsInADay-2017
Elasticsearch in architetture Big Data - EsInADay-2017
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
ElasticSearch 5.x - New Tricks - 2017-02-08 - Elasticsearch Meetup
ElasticSearch 5.x -  New Tricks - 2017-02-08 - Elasticsearch Meetup ElasticSearch 5.x -  New Tricks - 2017-02-08 - Elasticsearch Meetup
ElasticSearch 5.x - New Tricks - 2017-02-08 - Elasticsearch Meetup
 
2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator2017 02-07 - elastic & spark. building a search geo locator
2017 02-07 - elastic & spark. building a search geo locator
 
ElasticSearch Meetup 30 - 10 - 2014
ElasticSearch Meetup 30 - 10 - 2014ElasticSearch Meetup 30 - 10 - 2014
ElasticSearch Meetup 30 - 10 - 2014
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJS
 

2016 02-24 - Piattaforme per i Big Data

  • 1. Roma - 24 Febbraio 2016 presenta Alberto Paro, BNova Technical Advisor Piattaforme per i Big Data
  • 2. Alberto Paro  Laureato in Ingegneria Informatica (POLIMI)  Technical Advisor per BNova  Autore di due libri su ElasticSearch + 6 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
  • 3.  Motivazioni  DataStore NoSQL  Hadoop/Spark  Linguaggio Scala
  • 4. 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:
  • 5. NoSQL - Definizione  Ogni database che non è un “Database relazionale”  Il termine fu coniato durante un meet-up  “Non-relational Databases”  Not Only SQL
  • 6. NoSQL - Tipologie Key-Value  Redis  Voldemort  Dynomite  Tokio* BigTable Clones  Accumulo  Hbase  Cassandra Document  CouchDB  MongoDB  Redis GraphDB  Neo4j  OrientDB  …Graph
  • 8. 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.
  • 9. 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
  • 10. 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)
  • 11. 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
  • 12. Linguaggio – Scala vs Java public 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) { case class User( var firstName:String, var lastName:String, var email:String, var password:Password) JAVASCALA
  • 13. 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
  • 14. Link Utili  Cassandra: http://cassandra.apache.org/  MongoDB: https://www.mongodb.org/  Neo4J: http://neo4j.com/  Spark: http://spark.apache.org/  Scala:  http://scala-lang.org/  http://www.scala-js.org/
  • 16. Q&A

Editor's Notes

  1. Key Value: Focus on scaling to huge amounts of data Designed to handle massive load Based on Amazon’s Dynamo paper Data 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 paper Data 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 Notes Data model: Collections of Key-Value collections Documents are often versioned GraphDB Focus on modeling the structure of data – interconnectivity Scales to the complexity of the data Inspired 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
  2. Spark SQL (DB, Json, case class)