5. Sobre mí
Graduado en
Ingeniera del
Software
Especialista
en
Tecnologías
Big Data
Master en
Sistemas en
Ingeniería de
la Información
6. 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
15. 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.
17. ¿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…
18. 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.
26. 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.
55. 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.
Motivación.
Cada vez que escuchamos hablar de Big Data, la mayoría de las empresas y de las personas pensamos en Hadoop.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
Motivación.
Cada vez que escuchamos hablar de Big Data, la mayoría de las empresas y de las personas pensamos en Hadoop.
Hadoop revolucionó el procesamiento de grandes volúmenes de datos, permitiendo a los usuarios almacenar gran cantidad de datos a precios muy bajos.
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.
La persistencia se realiza en discos duros y el problema principal es la latencia.
MapReduce en Hadoop, se limita a realizar Map, Combine y Reduce.
Los dos problemas anteriores hace que Hadoop no sea eficiente para la realización de cálculos iterativos
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.
Con tener instalado Scala y Spark en Pseudo-distribuido es suficiente para tener el sistema funcionando.
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.
· 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.
· 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.