Spark se ha asentando como un pilar tecnológico en big data analytics en un periodo de tiempo muy corto, lo que demuestra la velocidad y el interés que está acaparando este sector. Spark da respuesta a los retos principales de los entornos actuales en big data. Los requisitos por parte de las empresas son cada vez más ambiciosos, demandan un conjunto de herramientas cada vez más potentes para el entono basado en datos al que nos movemos.

¿Qué es Spark?

Apache Spark es un framework de procesamiento en modo código abierto desarrollado en 2009 en el AMPLab de la Universidad de California en Berkeley. El framework fue donado a la Apache Software Foundation en 2013. Spark permite realizar de manera rápida análisis de datos y modelos de desarrollo. Spark permite acceder al conjunto de datos evitando la necesidad de realizar submuestras tal y como hacen entornos tipo R. También da psoporte a trabajar en streaming lo que permite construir modelos en tiempo real con todo el conjunto de datasets. Si la tarea es demasiado grande para un único servidor, la arquitectura permite dividir la tarea en piezas más manejables según las capacidades de hardware que dispongamos en cada momento. Esas piezas de tareas divididas funcionan en modo en memoria a lo largo del cluster de servidores, aprovechando la memoria disponible conjunta del total de máquinas. El procesamiento de Spark está basado en su conjunto elástico de datos distribuidos (Resilient Distributed Dataset o RDD).

¿Porqué Spark se ha impuesto para procesamiento de big data?

En los últimos dos años Spark se ha puesto de moda en el mundo del big data debido a su rendimiento computacional y la amplia gama de librerías como Spark SQL, Spark Streaming, MLlib (machine learning) y GraphX.

Spark frameworkSpark SQL permite el procesamiento de datos estructurados. Permite trabajar con DataFrames, una abstracción de programación, y también puede actuar como motor de consultas SQL distribuido. Spark Streaming  permite  realizar un procesamiento de datos en tiempo real, escalable, de alto rendimiento, y con tolerancia a fallos. El objetivo de MLlib es hacer práctico, escalable y fácil el machine learning. Consiste en un conjunto de algoritmos y utilidades comunes, como clasificación, regresión, clustering, filtrado colaborativo y reducción de dimensionalidad. GraphX es el componente de Spark para visualizaciones y cálculo gráfico en paralelo.

Ventajas Spark

Hasta ahora no existía un framework de procesamiento de datos unificado que diera respuesta a todas las demandas. Esta es la ventaja principal de Spark, que permite a las áreas críticas de las empresas beneficiarse de las ventajas que ofrece este marco único. Veamos algunas:

Analítica avanzada

Spark ofrece un framework para realizar análisis avanzados out-of-the-box. Incluye como hemos visto una herramienta para realizar queries rápidamente, una librería de aprendizaje de máquina, un motor de procesamiento de gráficos, y un motor de análisis en datos en en streaming. No hay necesidad de implementar otras herramientas via MapReduce, Spark ya ofrece librerías preconfiguradas, que son más fáciles y rápidas de usar.

Simplicidad

Una de las primeras críticas que se hizo a Hadoop fue que era difícil de usar, requería que los usuarios comprendieran una variedad de complejidades como MapReduce o programación avanzada en Java. Aunque se ha simplificado a la vez que se hacía más potente con cada nueva versión, la queja ha permanecido. Spark fue creado para ser accesible a cualquiera con conocimientos en bases de datos y algo de habilidad de scripting en Python o Scala.

Resultados más rápidos

A medida que el ritmo de los negocios se acelera, también la necesidad para el análisis en tiempo real. Spark ofrece procesamiento in-memory en paralelo, consiguiendo unos resultados múltiples veces más rápidos que otras soluciones que requieren acceso a disco. Los resultados al instante eliminan los retrasos que pueden ralentizar los procesos de negocio e incrementar la analítica necesaria. Otras compañías han creado aplicaciones complementarias para Spark que facilitan una gran cantidad de ampliaciones y mejoras. Lo que se traduce en  que los analistas pueden trabajar de forma iterativa, afinando las respuestas más precisas y más completas.
Spark permite a los profesionales de la empresa hacer lo que se supone que deben hacer.

Sin preferencia por distribuidores Hadoop

Todas las distribuciones Hadoop dan soporte ahora a Spark por una razón muy sencilla: Spark es agnóstica en cuanto al distribuidor, lo que significa que el cliente no está atado a un determinado proveedor. Gracias a su naturaleza open-source, las empresas son libres para crear una infraestructura analítica basada en Spark sin necesidad de preocuparse qué ocurrirá si cambian de proveedor Hadoop en un futuro. Si hacen el cambio, pueden llevarse sus analíticas.

Encuesta del ecosistema Spark

Recientemente Typesafe realizó una encuesta sobre el ecosistema Spark. Algunas claves extraídas del informe sobre cómo se están realizando despliegues Spark en proyectos en las empresas:

  • En cuanto al almacenamiento de datos, un 62% de los encuestados utilizaban HDFS. Casi la mitad, el 46%, estaban utilizando algún tipo de base de datos. El 41% usaba Kafka, y el 29% estaba usando Amazon S3.
  • En cuanto a gestión del cluster, el 56% utilizaban una sola instancia de Spark- Un 42% usaban YARN, y el 26% Apache Mesos.
  • En cuanto a lenguajes, un 88% usaba Scala, un 44% Java, y un 22% Python.
  • En cuanto a roles de usuario, una encuesta de Databricks realizada en 2015, un 41% de los encuestados se consideraba ingeniero de datos, un 22,2% científico de datos, un 17,2% arquitectos de datos, un 10,6% tenían un perfil de gestión de negocio, y un 6,2% estaba relacionado con el entorno académico.
principales_sectores_utilizando_spark

10 sectores principales utilizando Spark. Databricks Spark Survey Report 2015

Spark, el entorno big data de moda

La cantidad global de datos generados cada día es de 2,5 exabytes. El mercado de big data ha sobrepasado los 27.000 millones USD. Spark es una arquitectura de computación expresamente diseñada para este tipo de crecimiento. En Junio de 2015 IBM anunció que iba a formar un millón de data scientists e ingenieros en Spark.  Otras razones por las que la trayectoria ascendente de la arquitectura:

Reinventando MapReduce

Comparándolo con MapReduce, Spark ofrece mayor flexibilidad. MapReduce solamente permite dos operaciones: mapear y reducir. Spark ofrece más de 80 operaciones de alto nivel. MapReduce es ineficiente al manejar determinados algoritmos, por lo que se desarrollaron alternativas para manejar herramientas analíticas interactivas. Spark destaca en la programación de modelos que incorporan iteraciones, interactividad, y streaming.

Uso de HDFS

Spark permite (aunque no obliga a) usar HDFS (Hadoop File System).

Uso de YARN

Spark permite usar el gestor de cargas de trabajo YARN de Hadoop.

Uso eficiente de la memoria

El modelo Hadoop se basa en un modelo en dos etapas MapReduce  en disco. Spark es un modelo multi-etapa con primitivas en memoria, lo que permite un tiempo de respuesta de hasta 100 veces para determinadas configuraciones. al permitir a los programas cargar los datos en la memoria del cluster y hacer las consultas repetidamente, Spark está especialmente preparado para algoritmos de machine learning. En estudios de benchmark recientes referentes a almacenamiento en memoria (como instancias HDFS sin disco) Spark superaba a Hadoop en 20 veces.

Spark ofrece workflows de analíticas

Gracias a su librería para machine learning (MLlib), al API para gráficos analíticos (GraphX),  el soporte de queries basadas en SQL, y aplicaciones en streaming, Spark se convierte en una plataforma convergente cuando necesitamos hacer analítica seria en big data y usar el código que tengamos escrito en cualquiera de los componentes para hacer nuestro propio workflow analítico.