2. Índex
Introducció a Sparkling Water
Conceptes Clau
Data Munging
Scoring
Característiques, Spark i H2O
Cicle de Vida
Arquitectura i Tractament de Dades
Casos d'ús
Exemples d´ús
Començar amb Sparkling Water
Conclusions
3.
4. Introducció
Spark
Plataforma open-source optimitzada per gran manegaments de dades (big data)
H2O
Producte open-source basat en l'escalabilitat del machine learning i "data science".
Sparkling Water és el resultat de combinar el millor de les dues tecnologies
Algoritmes escalables de machine learning amb l'ecosistema i les capacitats d'Spark API
Suporta Scala, R y Python a través de H20 Flow UI
5. Data Munging
Donar forma a un conjunt de dades desordenat, també conegut data wrangling.
Al realitzar un anàlisi de dades (aplicar un model analític), es seleccionen unes característiques
que han de tenir les dades abans d'aplicar el model
Totes les operacions que es fan a un conjunt de dades sense procesar per netejarlo, es coneix
com Data munging.
A vegades, el Data munging crea dades derivades, com identificadors únics o d'altre informació
necessaria.
6. Scoring
Técnica per avaluar la probabilitat de que un individu compleixi un objetiu previst
S'obté de diverses quantitats i qualitats de dades disponibles de l'individu
Dades socio-demogràfiques, comportaments de compra, respostes anteriors
Regressió logística, classificacions (falsos positius)
Exemples
Determinar la viabilitat d'un client que vol demanar un crèdit (edad, feina, ingresos, préstecs...)
Millor àrea d'implantació d'una fàbrica en funció de les característiques d'una població (habitants, cicle
de vida, mitjana edad...)
7. Característiques
Spark
Eficiencia en memòria
Rapidesa computacional
Algoritmes de Machine learning
Parser, GUI, interficie-R
H20
API fàcil d'usar (intuïtiva)
Gran comunitat activa
Components per la plataforma –
SQL
Multitenacy
8. Comparació de Sparkling Water amb Spark
+ H20
Quin hauria de fer servir?
Depèn de les necessitats del usuari
Perquè utilitzar Sparkling Water, i no desenvolupar un model POJO i Spark mateix?
L'ús esperat de SW es per tenir H20 disponible a dins d'un context Spark.
Útil per training: es poden aprofitar diferents data conectors, capacitats de munging...
Un model POJO/MOJO + Spark es suficient per fer scoring
És necessari quan vols utilitzar algoritmes de H20 en harmonía amb l'ecosistema Spark.
9. El que ens proporciona Sparkling Water
Integració de manera transparent de la plataforma de machine learning d' H2O amb
l'ecosistema de Spark
Ús de les estructures de dades d'H2O (H2O Frame) i algoritmes amb l'API de Spark
10. Arquitectura de dades: RDD
Perquè aquesta arquitectura de dades?
Problema al guardar informació en sistemes distribuits (reutilització, compartiment)
Processos lents ja que involucren moltes operacions E/S com repliques i serialitzacions
Solució: Tolerancia a fallades distribuida en memòria dels càlculs
Resilient Distributed Datasets
Inmutable
Particionat
Tolerant a fallades
Avaluació dèbil (no estricte ni repetida)
Persistent
11. Cicle de vida de Sparkling Water
1. $ spark-submit
2. Spark Worker JVM
3. Spark Executor JVM
4. H2O
5. Main App (Scala)
12. Tractament de les Dades
2. De Spark RDD a H2O RDD
Dues Copies: a Spark RDD i a H2O Frame
(columnes de dades comprimides sobre les
que operen els algoritmens de H2O)
3. Retorna les prediccions resultants
1. Spark SQL llegeix de Dades origen
(de HDFS a Spark RDD)
Dades a Spark Executor JVM
13. Casos d'ús – Model building
1. Data source
2. Data munging
3. Modelling
4. Prediction processing
15. Casos d'us
Stream processing, Off-line Data training
1. Processar dades
2. Exportar el model
3.(binari o codi)
4. Processar el model
5. Fer prediccions
16. Exemples
• Crear un Model: amb dades meteorològiques i dates de vols per predïr el
retràs d'aquests de Barcelona a Londres
• A partir de twitts, a quina hora twitteja la persona i quins continguts
escriu, saber si aquesta persona està a l'atur o no i quina ideologia
política té
• Mirar si hi ha relació entre el mapa de les persones que escriu missatges
rasistes a les xarxes socials amb el mapa de les colonies del Ku Klux Klan
17. Requeriments d'ús
Linux/OS X/Windows
Java 7+
Spark 1.6+
Sparkling Water es desenvolupa en diferents branques paral·leles segons per cada
versió Spark
Configurar la variable shell SPARK_HOME per a que apunti al directori d'instalació
d'Spark
export SPARK_HOME="/path/to/spark/installation" .
export MASTER="local-cluster[3,2,1024]"
import org.apache.spark.h2o._
val h2oContext = new H2OContext(sc).start()
import h2oContext._
18. Instal·lar i Executar
Desenpaquetar el zip
Configura el SPARK_HOME per la instal·lació del Spark
Executar la shell:
$ /bin/sparkling-shell
19.
20. Conclusió
Sparkling Water és l’eina perfecte per aquelles persones que vulguin iniciarse en
l’àmbit de ‘machine learning’ i ja coneguin l’ecosistema que ofereix Spark per
tractar amb ‘big data’, tot integrat dins d’un sol entorn.
La comunitat de la plataforma és molt activa, i al ser open-source, el progrés de
Sparkling Water és constant.
Over the past few years, we watched Matei and the team behind Spark build a thriving open-source movement and a great development platform optimized for in-memory big data, Spark. At the same time, H2O built a great open source product with a growing customer base focused on scalable machine learning and interactive data science. These past couple of months the Spark and H2O teams started brainstorming on how to best combine H2O’s Machine Learning capabilities with the power of the Spark platform. The result: Sparkling Water.
Sparkling Water allows users to combine the fast, scalable machine learning algorithms of H2O with the capabilities of Spark. With Sparkling Water,
users can drive computation from Scala/R/Python and utilize the H2O Flow UI, providing an ideal machine learning platform for application developers.
Data Munging es básicamente el término hip para limpiar un conjunto de datos desordenado. Por lo general se utiliza en conjunción con otro término hip 'ciencia de los datos' que es básicamente análisis de datos.
Si alguna vez ha realizado un análisis de datos, puede haber encontrado la selección de características antes de aplicar su modelo (modelo analítico, me refiero) a los datos.
Por lo tanto, en general, toda la actividad que usted hace en los datos sin procesar para hacerlo "limpia" lo suficiente como para introducir su algoritmo analítico es la munging de datos.
A veces, munging de datos crea algunos datos derivados también. Una de las cosas más comunes que los datos munging hace es que crea identificadores únicos. Pero la derivación de datos no es el objetivo primario de la munging de datos.
La puntuación es una técnica para dar prioridad a los datos para evaluar una calificación o para determinar la probabilidad de que un individuo cumpla con una solicitud o pertenezca a un objetivo previsto.
La puntuación suele obtenerse de los datos cuantitativos y cualitativos disponibles en el individuo (datos socio-demostrativos, comportamiento de compra, respuestas anteriores ...) a los que podemos aplicar un modelo de puntuación.
En general, utilizamos la regresión logística como la técnica de modelado. Es una técnica de aprendizaje supervisado que, por ejemplo, ayuda a determinar si un elemento pertenece a una categoría basada en descriptores recopilados en una muestra de población con el fin de generalizar el aprendizaje.
Algunos ejemplos de aplicaciones:
Determinar la viabilidad de un cliente que busca crédito basado en características tales como edad, tipo de empleo, nivel de ingresos, otros préstamos pendientes, etc.
Para una empresa, determinar el mejor tipo de área de plantación en función de las características del vecindario (CPS, número de habitantes, ciclo de vida, etc.).
Multitenacy: The term "software multitenancy" refers to a software architecturein which a single instance of software runs on a server and serves multiple tenants.
Which one should I use? Direct spark with pojo or sparkling water with Binary.
There is no 'right' answer, it depends on your use case. It sounds like what you want is the POJO/MOJO in Spark, so you can do scoring without the added dependency of having an H2O cluster up.
What is the exact use of sparkling water, when we can easily deploy a model using pojo and spark itself?
The exact use of Sparkling Water is to have an H2O available within a Spark context. This is particularly useful for training: you can leverage Spark's many data connectors, munging capabilities etc. POJO/MOJO + Spark is sufficient for scoring
Is sparkling water needed only when you have to train model on huge amounts of data? Or it can be used in PROD deployments of model's as well.
Sparkling Water is needed when you want to leverage H2O's algorithms in a context that plays nicely w/ the Spark ecosystem.
If putting a model in "production" means having "always on" scoring exposed as a REST endpoint or similar: the POJO/MOJO is the way you want to go (H2O clusters are not highly available). You'll need to make sure you're handling incoming data correctly yourself though.
If you are doing batch scoring, nightly or otherwise, then it may make sense to use the binary model w/ Sparkling Water because parsing incoming data becomes trivial (asH2OFrame(..)) and scoring is easy as predict()
Hi ha un problema a baix nivell amb la reutilització de dades o compartició existent en els sistemes distribuits (com MapReduce) i es quan Necessites guardar informacio en un sistema intermig d'emmagatzematge distribuit com HDFS o AmazonS3
This makes the overall computations of jobs slower since it involves multiple IO operations, replications and serializations in the process.
Ref: https://blog.h2o.ai/2014/09/how-sparkling-water-brings-h2o-to-spark/
1- executem la seguent comanda per enviar l'aplicacióde sparkling water (el fitcher.jar)cap al node master de spark
2- Distribuïr l'aplicació per cada un dels nodes esclaus o treballadors(aquest pas és automàtic) (no executen res NO CPU, NO MEM)
3- Dins del Cluster de Sparkling Water entra en joc l'Spark que Executara tota la feina
4- Cada Spark Executor engega una instància d H2O i compartiran la feina entre els dos
5- Després de tots del processos,l'aplicació principal en Scala s'executa tenint accés als dos entorns
Resilient distributed dataset, the central data structure of Apache Spark
https://www.h2o.ai/download/sparkling-water/
# To launch a local Spark cluster with 3 worker nodes (nodes de treball) with 2 cores and 1g per node
Create an H2O cloud inside the Spark cluster: