Spark: un destello en el universo Big Data

Introducción

Spark es una plataforma open source (licencia Apache 2.0) para procesamiento paralelo en clusters. Está orientada a manejar grandes volúmenes de datos y ejecutar cómputo intensivo sobre ellos. Spark está suponiendo una revolución en el mundo del Big Data, podemos verlo como una evolución de Hadoop MapReduce, que nos ofrece varias ventajas y reduce significativamente los tiempos de ejecución.

1

El nacimiento de Spark surge en los laboratorios AMPLab de la Universidad de Berkeley en 2009, su evolución ha sido espectacular, incrementándose notablemente la comunidad y el número de contribuciones. Finalmente en 2014 Spark fue acogido como un proyecto “Top-Level” de la Apache Software Foundation y nació la compañía Databricks para dar soporte al desarrollo de Spark.

2

Algunas de las ventajas más notables de Spark son:

  • Procesamiento en memoria de los resultados parciales.
  • Soporte para múltiples lenguajes.
  • Tolerancia a fallos implícita.
  • 100% Open Source.
  • Hasta 100 veces más rápido que Hadoop MapReduce.
  • Shell interactiva.
  • Módulos que lo extienden para streaming, Machine Learning, acceso a datos, grafos.

3

Componentes

Spark se basa en un componente principal o core y sobre él existen ciertos componentes que extienden su uso. Los más reseñables serían los siguientes:

  • Spark SQL: Nos permite acceder de forma estructurada a los datos e integrar Spark con Hive, ODBC, JDBC y herramientas de BI.
  • Spark Streaming: Ofrece soporte para procesamiento en casi tiempo real a través de un sistema de empaquetamiento de pequeños lotes.
  • MLlib: Incluye una biblioteca de algoritmos de machine learning clásicos, preparados para ser ejecutados sobre Spark.
  • GraphX: Nos ofrece un API para computación paralela de grafos.

Todos estos paquetes están incluidos junto con el core en la distribución Spark.

4

La abstracción RDD

Un Resilient Distributed Dataset (RDD) es una abstracción de Spark que representa una colección inmutable de elementos en memoria distribuida a través del cluster en particiones. Sobre un RDD se pueden ejecutar operaciones en paralelo.

Cada partición distribuida representa un subconjunto de los datos y está asignada a cada nodo de manera que este podrá operar de forma paralela con estos datos.

Shell interactiva

Spark nos ofrece una shell interactiva en Scala y Python con la que podemos experimentar y testear, probando todo el API que el framework nos ofrece.

5

Esto nos proporciona una muy buena herramienta para introducirnos en la plataforma y hacer pruebas rápidas.

Ejemplo word count

A continuación vamos a ver cómo sería un ejemplo de una implementación para solucionar el problema de contar el número de palabras de un fichero usando Spark y, en este caso, en lenguaje Python.

El problema del conteo de palabras es un problema clásico, que se suele usar como ejemplo de típico problema paralelizable. Es sencillo de entender, pero nos da una idea de cómo de bien puede escalar la solución. Es una buena aproximación inicial antes de enfrentarnos a problemas más complejos.

# Read text file
f = sc.textFile("/var/log/README")

# Define map and reduce transformations
wc = f.flatMap(lambda x: x.split(' ')).map(lambda x: (x, 1)).reduceByKey(lambda x,y: x+y)

# Trigger action to execute transformations and collect results
wc.collect()

En este caso sólo nos lleva tres líneas: la primera en la que leemos el fichero, en la segunda definimos las transformaciones map/reduce haciendo uso de funciones lambda y en la última disparamos la ejecución y mostramos los resultados por pantalla.

Spark se encargará de construir el grafo de ejecución, cargar los datos en memoria de forma distribuida a través de un RDD, ejecutar las transformaciones en los nodos que tenga nuestro cluster y, por último, recopilar y agregar los resultados.

Conclusión

Spark ha sido diseñado desde el principio para solucionar muchos problemas que se nos presentaban con Hadoop, es rápido y eficaz. Su adopción es cada vez mayor y el número de contribuidores se ha incrementado notablemente. Podemos decir que la plataforma ha alcanzado un punto de madurez.

Ya existen un buen número de proyectos reales donde se ha aplicado con éxito y se ha puesto de manifiesto la ventaja competitiva que ofrece. Realmente Spark se ha convertido en el última gran “destello” en el universo Big Data.

7

 

Manuel Zaforas es Ingeniero Superior en Informática por la UPM. Está interesado en HPC, IoT, Cloud, NoSQL, Big Data, Data Science, Machine Learning y Agile. Apoya activamente la implantación de software libre, la calidad en los procesos de desarrollo de software a través de la mejora continua y la innovación en las metodologías de desarrollo y gestión de equipos. Actualmente trabaja en Paradigma como Scrum Master y Arquitecto Software.

Ver toda la actividad de Manuel Zaforas

Recibe más artículos como este

Recibirás un email por cada nuevo artículo.. Acepto los términos legales

Comentarios

  1. david dice:

    MUY BUENO EL ARTICULO, quisiera saber si de pronto el SPARK se podria integrar a alguna herramienta HPC que me sugieres, para tener en un solo cluster intregado BIGDATA+HPC

Escribe un comentario