Lightning-fast cluster computing
@javituiter
www.franciscojavierpulido.com www.exploradata.com
¿Quién soy?
¿?
¿?
¿?
Sobre mí
Graduado en
Ingeniera del
Software
Sobre mí
Graduado en
Ingeniera del
Software
Master en
Sistemas en
Ingeniería de
la Información
Sobre mí
Graduado en
Ingeniera del
Software
Especialista
en
Tecnologías
Big Data
Master en
Sistemas en
Ingeniería de
la Información
Sobre mí
Graduado en
Ingeniera 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 equipo
www.ExploraData.com
Sobre mí
¿Big Data = Hadoop?
Hadoop
Precio
Volumen
de 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
MAP
COMBINE
REDUCE
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
Map
Filter
Sample
Union
groupByKey
reduceByKey
Join
Cache
…
Reduce
Collect
Count
Save
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/benchma
rk/
Agrupaciones
https://amplab.cs.berkeley.edu/benchma
rk/
Join
https://amplab.cs.berkeley.edu/benchma
rk/
Join
https://amplab.cs.berkeley.edu/benchma
rk/
Lanzar una Query desde un Script
https://amplab.cs.berkeley.edu/benchma
rk/
Lanzar una Query desde un Script
https://amplab.cs.berkeley.edu/benchma
rk/
¿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

OpenAnalytics Madrid 2014: Spark

Notas del editor

  • #3 Motivación. Cada vez que escuchamos hablar de Big Data, la mayoría de las empresas y de las personas pensamos en Hadoop.
  • #4 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #5 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #6 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #7 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #8 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #9 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #10 Motivación. Cada vez que escuchamos hablar de Big Data, la mayoría de las empresas y de las personas pensamos en Hadoop.
  • #11 Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
  • #12 Además, la técnica MapReduce es ideal para implementar aplicaciones Batch Processing muy complejas que tratan de dar soluciones a: · Sistemas de Log, ejecución de ETLs o Sistemas de Recomendación.
  • #13 La persistencia se realiza en discos duros y el problema principal es la latencia.
  • #14 MapReduce en Hadoop, se limita a realizar Map, Combine y Reduce.
  • #15 Los dos problemas anteriores hace que Hadoop no sea eficiente para la realización de cálculos iterativos
  • #20 Una operación de tipo transformación modifica el RDD. Una operación de tipo action nos devuelve una carácterística del RDD. Un count, collect, reduce, etc.
  • #22 Con tener instalado Scala y Spark en Pseudo-distribuido es suficiente para tener el sistema funcionando.
  • #26 1. Las aplicaciones de Spark se ejecutan en sets de procesos independientes en el cluster y que a su vez son coordinados por el objecto SparkContext del programa principal (llamado driver program). 2. El SparkContext puede conectarse a muchos tipos de clúster managers (tanto Spark StandAlone como los administrador por Mesos/YARN), el cual asigna recursos a través de las aplicaciones. Una vez conectado, Spark toma los executors en los nodos del cluster, los cuales son "worker processess" que ejecutan operaciones y almacenan los datos de la aplicación. 3. Después se envía el código de tu aplicación (definido por el archivo JAR o Python que hemos enviado al SparkContext) a los executors. 4. Por último, el SparkContext envía las tareas a los executors para ejecutarlas.
  • #29 · Broadcast variables: las cuales se usan para cachear un valor en memoria a todos los nodos. · Accumulators: las cuales son variables que solo admiten "añadir algo", como contadores y sumas.
  • #30 · Broadcast variables: las cuales se usan para cachear un valor en memoria a todos los nodos. · Accumulators: las cuales son variables que solo admiten "añadir algo", como contadores y sumas.