4. Presentación
Presentación
JORGE LÓPEZ-MALLA
@jorgelopezmalla
Después de unos años trabajando en
proyectos con tecnologías tradicionales
empecé a trabajar con Big en I+D y
desde entonces me enamoré de este
mundo.
Tras trabajar en diversos proyectos
usando Spark como tecnología base
estoy a cargo de las modificaciones de
Spark para la plataforma Stratio
SKILLS
5. La empresa
Stratio acompaña a las empresas en su viaje hacia la Transformación Digital. Mediante el trabajo duro y la
creatividad, nuestra meta es reinventar a las empresa alrededor de sus datos para que así estas puedan
competir en este nuevo mundo digital.
Nuestra solución es un producto de transformación que utiliza tecnologías Big Data de tercera generación
para ejecutar la forma más completa de Transformación Digital, garantizando escalabilidad, flexibilidad
máxima y adaptación a nuevos mercados.
Si tenéis alguna pregunta o quereis a una demostración en vivo de nuestro producto, contactar
con: contact@stratio.com
Presentación
8. • Spark nace como una prueba de concepto de Mesos en 2010.
• Sólo nace con naturaleza Batch.
• Todo el Big Data era Hadoop.
• Tenía muchos Bugs.
• Casi nadie sabía Scala.
• Casi imposible encontrar documentación.
Inicios
Inicios o ¿dónde está mi map & reduce?
9. • Mesos nace como un gestor de recursos para soportar múltiples frameworks como Hadoop
• Spark nace como una prueba de concepto de Mesos en 2010.
• Su objetivo era dar toda la funcionalidad del ecosistema en un sólo proyecto
• Otro objetivo era quitar las dependencias de Hadoop.
• YARN aparece poco después
Spark y Mesos
Inicios o ¿dónde está mi map & reduce?
10. Scala ¿amigo o enemigo?
Inicios o ¿dónde está mi map & reduce?
private IntWritable key = new IntWritable(1);
private IntWritable output = new IntWritable(1);
protected void map(LongWritable key,
Text value,
Context context) {
String[] fields = value.split("t");
key.set(Integer.parseInt(fields[0]));
output.set(Integer.parseInt(fields[1]));
context.write(key, output);
}
DoubleWritable average = new DoubleWritable();
protected void reduce(IntWritable key,
Iterable<IntWritable> values,
Context context){
int sum = 0;
int count = 0;
for((IntWritable value: values) {
sum += value.get();
count++;
}
average.set(sum / (double) count);
context.write(key, average);
}
val sc = new SparkContext(new SparkConf)
sc.textFile("....").map(line => {
val Array(key, value) = line.split("t")
(key.toInt, (value.toInt, 1))})
.reduceByKey((tuple1, tuple2) =>
(tuple1._1 + tuple2._1, tuple1._2 + tuple2._2))
.map(keyValue =>
keyValue._2._1/keyValue._2._2).saveAsTextFile("")
11. • A principios 2014 es el proyecto con más actividad en Apache
• Logran mejorar x100(en el mejorde los casos) la velocidad de Hadoop
• Tienen integrado en un sólo poryecto soluciones de Batch, Streaming, ML y Grafos.
• Posibilidad de tres gestores de recursos (M&R sólo admite YARN) YARN, Mesos y Standalone
• Y todo esto con la séptima parte de las líneas de código de las soluciones de Hadoop
¿Cómo acabó las versiones 0.X?
Inicios o ¿dónde está mi map & reduce?
12. Spark y sus módulos
Inicios o ¿dónde está mi map & reduce?
1º Commit a github
Spark 0.3
28/03/2010
Spark 0.7
27/02/2013
alpha de Streaming
Python API
Spark 0.6
15/10/2012
Spark + Pregel
Java API
Spark 0.8
25/07/2013
alpha de MlLib
YARN
Spark 0.9
22/02/2014
Pregel -> GraphX
HA en Standalone
13. Y Stratio ¿qué hizo?
Inicios o ¿dónde está mi map & reduce?
18. • Existe una versión previa de Shark (Hive sobre Spark)
• Nace como módulo en la versión 1.0
• Evoluciona de ser un módulo más a prácticamente el core de Spark
• StructuredRDD -> Dataframe -> Dataset
• Cobran importancia las herramientas de BI
SparkSQL - Introducción
Consolidación y locura por el SQL y el Streaming
20. Spark SQL DataStores
Consolidación y locura por el SQL y el Streaming
• Las bases de datos NOSQL estaban en auge
• En las primeras versiones del 1. de Spark se centran en la parte de SQL
• StructuredRDD
• Los Dataframes nacen en Spark 1.3
• Con los dataframes llega las interfaces necesarias para crear Datastores.
• Se cargan dinámicamente mediante el comando packages.
• El primer datastore fue el de Cassandra.
22. Spark SQL BI
Consolidación y locura por el SQL y el Streaming
• SparkSQL nace con la idea de adaptar Hive a Spark
• Hive Thriftserver
• Una vez que los datos se han generado se vió el valor añadido de poder consultarlo.
• Varias herramientas de BI se adaptan para poder consumir datos usando Spark.
26. Spark SQL errores aprendidos
Consolidación y locura por el SQL y el Streaming
• Los datos no vienen tan “limpios” como esperamos
• SparkSQL aplica un estándar a procesamientos complejos
• SparkSQL trabaja con orígenes o destinos de datos heterogéneos.
• Algunas propiedades o comportamientos heredados son erróneos
○ spark.sql.shuffle.partitions
○ lecturas en parquet de diferentes carpetas.
○ usar comportamiento estructurado en bd no estructurados
27. Spark Streaming, la locura del real time
Consolidación y locura por el SQL y el Streaming
30. Real-time detección de fraude
DATA RECEIVER
REAL-TIME
AGGREGATION
CONSOLIDATION
Dashboardi
ng
Reporting
FRAUD
DETECTION
Spark streaming + agregaciones + Machine Learning
Consolidación y locura por el SQL y el Streaming
31. ETL
Apache flume + Spark Streaming
REAL-TIME
AGGREGATION
Dashboarding
Reporting
Consolidación y locura por el SQL y el Streaming
32. Spark Streaming lecciones aprendidas
Consolidación y locura por el SQL y el Streaming
• La memoria no es gratis, updateStateByKey
○ Reduce antes de actualizar
○ TTL
○ Borra claves con None
○ mapWithState experimental desde 1.6
• Kafka
○ Estudiar el particionado y la distribución de los eventos por caso de uso
○ kafka direct disponible desde 1.3
33. Y Stratio ¿qué hizo?
Consolidación y locura por el SQL y el Streaming
34. Stratio Crossdata
Consolidación y locura por el SQL y el Streaming
• Tras SparkSQL Crossdata se remodeló
• Ahora tenía un modelo de conectores para diversas BD (SQL y NOSQL)
• Stratio Deep deja de existir y pasan a usarse conectores para distintas BD.
• Se hizo un gran esfuerzo en el conector ODBC
• Se añade la comunicación Streaming/Batch
37. Stratio Streaming / Decision
REQUESTS
kafka
zookeeper
Siddhi
CEP
requests
events
Service discovery
STREAMA
(xN)
INTERACTIVE
SHELL
API
STREAMING
STREAMING
CREATE
STREAM
ALTER STREAM
ADD QUERY
DROP STREAM
INSERT INTO
LIST STREAMS
SAVE2CASSANDRA
LISTEN
STREAM
AUDITING
STATISTICS
INDEX
SAVE2MONGO
FAILOVER CASSANDRA
Kafka
ack ack
CASSANDRA
CASSANDRA
Consolidación y locura por el SQL y el Streaming
38. Sparkta: A first look
DRIVER - SUPERVISOR
AGGREGATION POLICY
QUERY
SERVICES
Aggregation policy
definition is sent to the
engine
Allows multiple application to be
defined, each of which is bound to a
context, executing the aggregation
workflow
others
AGGREGATION WORKFLOW
Consolidación y locura por el SQL y el Streaming
40. Introducción
El auge de los data scientist
• Spark nace con la intención de aunar todos los problemas del procesamiento Big Data en un
proyecto
• El Machine Learning siempre estuvo en el proyecto pero hubo tiempos en los que era la
“estrella”
• Con el auge de los data scientist nacen herramientas que “facilitan” el uso de Spark.
• Python se convirtió en una necesidad.
42. Evolución de Python en Spark
El auge de los data scientist
• Desde que hay API de Python para ml las contribuciones se doblan
• El performance de usar Dataframes con Python a RDD mejora sustancialmente
43. Herramientas gráficas para usar Spark
El auge de los data scientist
• Aunque usar Spark es mucho más sencillo que usar Hadoop, sigue habiendo partes que
requieren un conocimiento específico de Spark
• Se crean herramientas en las “únicamente” nos tenemos que preocupar de la codificación.
• Implementan representación de resultados por gráficos de forma nativa
44. Casos de Uso de ML -> Perfilado
El auge de los data scientist
group data by
behavioral
similarity
labeled data decision
tree
interpreted
rules
behavioral
features
CLUSTERING PROFILING
45. Casos de Uso de ML -> Analisis de patrones
El auge de los data scientist
a3
a3
a2
a1
a0
a1
a2
a2
a3
User 1 Self-Management Behaviour
ABCDEFGHIJKLM User 1 Behaviour (Journey)
ABCDFGIJKM P1 Most Common Path
46. Spark MlLib lecciones aprendidas
Consolidación y locura por el SQL y el Streaming
• Múltiples tipos de entradas es un problema.
• No hay que dejarse llevar por últimas versiones.
• El Machine Learning requiere mucho trabajo manual
○ ¡Ayuda a tu data scientist todo lo que puedas!
• Streaming y MlLib se pueden juntar, teniendo en cuenta el entrenamiento
48. ...
Stratio Intelligence
El auge de los data scientist
...
Multiuser
Environment
Manage users and
provision of notebooks
Analytic
Environment
User 1 front-end
User N front-end
Kernel Code interpreter
Analytic Environment
Notebook server
User 1 back-end
User N back-end
User code
49. Stratio Intelligence
El auge de los data scientist
Docker
Docker
Docker
user 1
user 2
user3
Kernels
Kernels
Kernels
51. Introducción
Spark 2.0
• Spark 2.0 and beyond
○ Spark 2.0
■ Todo es SQL
■ el Dataframe ha muerto, ¡larga vida al Dataset!
■ SparkSession
■ Structured Streaming
■ Necesidad de más gestores de recursos además de YARN y Standalone
○ La Realidad de Stratio
■ ¡Adaptaciones!
■ Integraciones con Mesos DC/OS
■ Todos los proyectos hacen uso de algún algoritmo de Machine Learning