2016 02-24 - Piattaforme per i Big Data

16
Roma - 24 Febbraio 2016 presenta Alberto Paro, BNova Technical Advisor Piattaforme per i Big Data

Transcript of 2016 02-24 - Piattaforme per i Big Data

Page 1: 2016 02-24 - Piattaforme per i Big Data

Roma - 24 Febbraio 2016presenta Alberto Paro, BNova Technical Advisor

Piattaforme per i Big Data

Page 2: 2016 02-24 - 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

Page 3: 2016 02-24 - Piattaforme per i Big Data

Motivazioni

DataStore NoSQL

Hadoop/Spark

Linguaggio Scala

Page 4: 2016 02-24 - Piattaforme per i Big Data

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:

Page 5: 2016 02-24 - Piattaforme per i Big Data

NoSQL - Definizione

Ogni database che non è un “Database relazionale” Il termine fu coniato durante un meet-up “Non-relational Databases” Not Only SQL

Page 6: 2016 02-24 - Piattaforme per i Big Data

NoSQL - Tipologie

Key-Value Redis Voldemort Dynomite Tokio*

BigTable Clones Accumulo Hbase Cassandra

Document CouchDB MongoDB Redis

GraphDB Neo4j OrientDB …Graph

Page 7: 2016 02-24 - Piattaforme per i Big Data

NoSQL - Evolution

Page 8: 2016 02-24 - Piattaforme per i Big Data

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.

Page 9: 2016 02-24 - Piattaforme per i Big Data

Hadoop / SparkHadoop MapReduce

Apache Spark

Evoluzione del modello Map Reduce

Page 10: 2016 02-24 - Piattaforme per i Big Data

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)

Page 11: 2016 02-24 - Piattaforme per i Big Data

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

Page 12: 2016 02-24 - Piattaforme per i Big Data

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

Page 13: 2016 02-24 - Piattaforme per i Big Data

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

Page 14: 2016 02-24 - Piattaforme per i Big Data

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/

Page 15: 2016 02-24 - Piattaforme per i Big Data

Grazie per l’attenzione

Alberto Paro

Page 16: 2016 02-24 - Piattaforme per i Big Data

Q&A