Spark (I) – Introducción

spark-logo

Voy a hacer una serie de posts en la que explicaré tanto la instalación como el funcionamiento de los programas desarrollados para Spark.

En este primer post introductorio quiero hablar de dónde viene, en que estado está y hacia donde va. La mayoría de esta información la he sacado de la web oficial de Spark, pero intento darle un toque de sencillez en algunos puntos para hacerlo más entendible a los humanos.

 

Introducción

Hadoop revolucionó el procesamiento BigData permitiendo a los usuarios almacenar y procesar cantidades masivas de datos a un precio muy bajo. El algoritmo|técnica MapReduce es ideal para implementar aplicaciones de Batch Processing muy complejas que a menudo tratan de dar solución a sistemas de log, la ejecución de ETL, la computación de los índices web y potenciar los sistemas de recomendación personal. Sin embargo, su dependencia del almacenamiento persistente en disco para proporcionar tolerancia a fallos provoca una alta latencia entre servidores, cosa que viene muy mal para algunos cálculos iterativos así como algoritmos de aprendizaje que utilicen MapReduce.

El proyecto de Spark se centró desde el comienzo en aportar una solución factible a estos defectos de Hadoop, mejorando el comportamiento de las aplicaciones que hacen uso de MapReduce y aumentando el rendimiento considerablemente.

Pero…¿Qué es Spark?

Spark es un motor para el procesamiento de grandes volúmenes datos y que gracias a su llamada “interactividad” hace que el paradigma MapReduce ya no se limite a las fases Map y Reduce y podamos realizar más operaciones (mappers, reducers, joins, groups by, filtros…).
También proporciona API´s para Java,Scala & Python. Es preferible que se programe en Scala ya que el código se verá reducido y todo parecerá más limpio.

La principal ventaja de Spark es que guarda todas las operaciones sobre los datos en memoria. Esta es la clave del buen rendimiento que tiene Spark.

La siguiente figura muestra algunas de sus principales características:

· Baja latencia computacional mediante el cacheo de los datos en memoria en un dataset.
· Algoritmos iterativos eficientes debido a que las sucesivas operaciones comparten los datos en memoria, o accediendo de manera repetida al mismo dataset.

Un programa escrito en Spark como veremos en los siguientes posts permite ver un algoritmo paralelo de una forma tipo imperativa.

Y hasta aquí el post de hoy.

Os espero en el siguiente!!!

Fuentes:
http://spark.apache.org/downloads.html
http://databricks.com/blog