openanalytics madrid 2014: spark
DESCRIPTION
Spark - una alternativa eficiente a HadoopTRANSCRIPT
Lightning-fast cluster computing
@javituiter
www.franciscojavierpulido.com www.exploradata.com
¿Quién soy?¿?
¿?
¿?
Sobre mí
Graduado enIngeniera del
Software
Sobre mí
Graduado enIngeniera del
Software
Master en Sistemas en Ingeniería de la Información
Sobre mí
Graduado enIngeniera del
Software
Especialista en
Tecnologías Big Data
Master en Sistemas en Ingeniería de la Información
Sobre mí
Graduado enIngeniera del
Software
Master en Sistemas en Ingeniería de la Información
Especialista en
Tecnologías Big Data
Bloguero&
Tuitero
@javituiter
www.franciscojavierpulido.com
Sobre mí
Miembro del equipowww.ExploraData.com
Sobre mí
¿Big Data = Hadoop?
Hadoop
Precio
Volumende datos
MapReduce
Primer Problema: La Persistencia
Segundo Problema: MapReduce
<k1, v1> -> map -> <k2, v2> <k2, v2> -> combine -> <k2, v2> <k2, v2> -> reduce -> <k3, v3>
Tercer Problema: Cálculos iterativos
MAPCOMBINEREDUCE
Spark
· Es un motor para el procesamiento en memoria de grandes volúmenes de datos.
· Se facilita el paradigma MapReduce (reduciendo costes y tiempos de ejecución) a gracias a los RDDs.
· Tiene API´s para Scala, Java & Python.
La “magia”:Resilient Distributed
Datasets
¿Qué es un RDD?
· Colecciones lógicas, inmutables y particionadas de los registros a lo largo del clúster.
Datos
Paper RDD 2011. Matei Zaharia…
Beneficios· La consistencia se vuelve más sencilla gracias a la inmutabilidad.
· Tolerante a fallos: a través del “Lineage” los RDDs se pueden reconstruir si alguna partición se pierde.
· A pesar de que Batch Processing es un modelo restringido a una serie de casos de uso por defecto, gracias a los RDDs se puede utilizar en multitud de aplicaciones.
· Es bueno para algoritmos iterativos.
· Más rápido que Hadoop.
Operaciones sobre RDDs
Transformations Actions
MapFilter
SampleUnion
groupByKeyreduceByKey
JoinCache
…
ReduceCollectCountSave
lookupKey…
Características adicionales de Spark
Análisis Interactivo de los Datos
· Exploración de datos mediante una Shell interactiva en Scala.
Real Time
Gran apoyo de la comunidad
Clústers en Spark
Arquitectura
Además…
· Spark es agnóstico.
· Si las operaciones no caben en memoria, pagina a disco.
· Aplicaciones aisladas: cada aplicación tiene su propio Executor.
Algunos ejemplos
Variables
Broadcast:
Variables
Broadcast:
Accumulators:
Ejemplo 1: Paralelizar una colección
Ejemplo 1: Paralelizar una colección
Ejemplo 1: Paralelizar una colección
Creamos la colleción
Ejemplo 1: Paralelizar una colección
Action
Ejemplo 2: Utilizar Datasets
Ejemplo 2: Utilizar Datasets
Cargar archivo en variable
Ejemplo 2: Utilizar Datasets
Action
Ejemplo 3: Utilizar Datasets de HDFS
Ejemplo 3: Utilizar Datasets de HDFS
Cargar archivo de HDFS en variable
Ejemplo 3: Utilizar Datasets de HDFS
Action
Ejemplo 4: MapReduce Wordcount
Ejemplo 4: MapReduce Wordcount
Leemos de HDFS
Ejemplo 4: MapReduce Wordcount
“MapReducimos” el texto
Ejemplo 4: MapReduce Wordcount
Guardamos en HDFS
Benchmarks
Lanzar una Query
https://amplab.cs.berkeley.edu/benchmark/
Agrupaciones
https://amplab.cs.berkeley.edu/benchmark/
Join
https://amplab.cs.berkeley.edu/benchmark/
Join
https://amplab.cs.berkeley.edu/benchmark/
Lanzar una Query desde un Script
https://amplab.cs.berkeley.edu/benchmark/
Lanzar una Query desde un Script
https://amplab.cs.berkeley.edu/benchmark/
¿Quién lo utiliza?
Migrando de Hadoop a Spark
https://blogs.apache.org/foundation/entry/…
Ya lo tienen en producción
https://blogs.apache.org/foundation/entry/…
Conclusiones
Conclusiones
· Spark está ahí fuera.
· Extremadamente sencillo de instalar para jugar con el >> Para pasar a producción hacen falta especialistas.
· Spark es más rápido para ciertos casos de uso.
· Si utilizas Hadoop, prueba Spark.
· Es sencillo mezclar Batch Processing con Real Time.
· Se puede utilizar Scala, Java & Python.
Gracias
@javituiter
www.franciscojavierpulido.com www.exploradata.com