Spark (II) – Características principales

Hoy veremos las características principales que hacen a Spark tan atractivo.

Resilient Distributed Dataset

En Spark a diferencia de Hadoop, no utilizaremos una colección de datos distribuidos sino que usaremos los RDDs (Resisilient Distribuited Datasets). Normalmente no suelo dar la chapa sobre en que consiste esto a bajo nivel, pero ya que estamos en el blog lo dejo aquí por escrito:
Son colecciones lógicas, inmutables y particionadas de registros a lo largo del cluster que pueden ser reconstruidas si alguna partición se pierde (no necesitan ser materializadas pero si reconstruidas para mantener el almacenamiento estable). Se crean mediante la transformación de datos utilizando para ello transformaciones (filtros, joins, Group by…). Por otra parte permite cachear los datos mediante transformaciones como Reduce, Collect, count, save…
Los RDD son tolerantes a fallos, para ello mantiene una cosa llamada el “lineage” del RDD. Este “lineage” permite que los RDDs se reconstruyan en caso de que una porción de datos se pierda.
Por tanto, los beneficios de utilizar RDD´s son varios:
· La consistencia se vuelve más sencilla gracias a la inmutabilidad.
· Tolerancia a fallos con bajo coste (gracias al “lineage” mantenemos checkpoints de los datos).

· A pesar de ser un modelo restringido a una serie de casos de uso por defecto, gracias a RDDs se puede utilizar Spark para un cantidad de aplicaciones muy variadas.

Operaciones en RDDs

Análisis Interactivo de Datos

 Una de las características más útiles es el Shell interactivo que permite a un usuario utilizar las capacidades de Spark inmediatamente (no se necesita un IDE o compilar el código). La Shell es una herramienta que se utiliza para la exploración de datos interactivamente, que nos permitirá probar porciones de la aplicación que estemos desarrollando.
Spark puede leer y escribir datos desde y hasta HDFS. Lo bueno es que nos permite jugar con APIs en Java, Scala y Python para aplicaciones “stand-alone”.

Batch Processing más Rápido

 Los primeros despliegues de Spark se enfocaron en aumentar el rendimiento de las aplicaciones MapReduce existentes. Recodemos que MapReduce en la actualidad es un framework genérico de ejecución paralela de aplicaciones y no es exclusivo ni una implementación propietaria del core de Hadoop. Por lo tanto Spark proporciona también MapReduce que puede llegar a ser más eficiente gracias al uso de la memoria (mientras utilizará “lineage” para recuperar los fallos en caso de que fuese necesario).

Algoritmos Iterativos

Spark permite a los usuarios y a las aplicaciones especificar el cacheo de un dataset mediante la operación cache(). Esto significa que nuestra aplicación puede acceder a la memoria RAM en vez de al disco, lo cual aumenta de manera espectacular el rendimiento en algoritmos iterativos ya que pueden acceder acceder al mismo dataset repetidamente. Ese caso de uso cubre un gran número de aplicaciones, como pueden ser las aplicaciones orientadas a machine learning o los algoritmos gráficos que son iterativos por naturaleza.
Puedes ver más sobre esto en la web oficial de Spark.

Procesamiento de Streams en Tiempo Real

Dado que las operaciones realizadas los sistemas de análisis de datos poseen una latencia baja, es natural extender el motor hacia streams de datos en tiempo real. Spark tiene un API que nos permite trabajar con estos streams de datos y que además tienen una ventaja diferencial: podemos mezclar streams en tiempo real con programas Batch.
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s