Apache Spark 2.0.: novedades de la nueva versión

Apache Spark 2.0.: novedades de la nueva versión

La plataforma de computación distribuida de código abierto incluye algunas mejoras interesantes para su comunidad: se convierte en una herramienta 10 veces más rápida que Spark 16. y dispondrá de una API unificada para el desarrollo de aplicaciones todoterreno: con datos en tiempo real, pero también trabajo por lotes y consultas interactivas. 

BBVAOpen4U
|
22 Jul. 2016

No es la primera vez que hablamos de Apache Spark en BBVAOpen4U. Explicamos cuáles eran sus características principales cuando todavía era una tecnología incipiente y confirmamos su éxito absoluto cuando se impuso dentro del mercado de los Big Data como la opción más rápida, más potente, más escalable y más sostenible. El lanzamiento de su versión 2.0. viene a confirmar su gran acogida dentro de la comunidad de desarrolladores y las enormes posibilidades que ofrece a las empresas que usan grandes datos para obtener una ventaja competitiva.

Apache Spark es una plataforma de computación distribuida de código abierto; con una comunidad activa; más rápida y de implementación y mantenimiento más baratos que sus predecesores dentro del entorno de Hadoop como MapReduce; unificada; con una consola interactiva muy cómoda para los desarrolladores; y con una API bastante potente para trabajar con datos. Es la mejor opción del mercado porque ofrece a los ingenieros y científicos de datos una herramienta que resuelve cualquier escenario posible de aprendizaje automático, computación gráfica, streaming de datos y problemas de procesamiento de consultas interactivas en tiempo real y con toda la escalabilidad necesaria para responder a las necesidades.

La versión 2.0. de Apache Spark trae algunas características interesantes que la convierten en una herramienta aún más potente para trabajar con Big Data:

Apache Spark 2.0, más rápido que Spark y MapReduce

Con la llegada de Apache Spark, una de las ventajas esenciales de la nueva plataforma residía en la velocidad, basada esencialmente en que Spark trabaja en memoria, no en disco. El almacenamiento de los datos en memoria caché permite que la interacción con los datos sea más eficiente, más rápida. No sólo de los datos originales, también de las transformaciones sucesivas en esa información. Cuando el sistema necesita recurrir a ella no tiene que acudir al disco, sólo a la memoria caché. Se estima que Apache Spark comparado con Apache Hadoop MapReduce es 100 veces más rápido en memoria y 10 veces más rápido en disco.

Apache Spark 2.0 no se ha quedado ahí. La nueva versión ha aumentado aún más la velocidad de procesamiento de datos, basado igualmente en la memoria caché (en este caso una memoria caché integrada) y los avances en la generación de código en tiempo de ejecución. Se estima que la nueva versión puede ser entre 5 y 10 veces más rápida que la 1.0 y las versiones sucesivas de Apache Spark.

Las APIs quedan unificadas en una única API

El gran valor añadido de Apache Spark es el procesamiento y el análisis de los datos en tiempo real. Y lo que la comunidad de desarrolladores empezó a reclamar a los administradores de Spark es que dieran un salto mayor hacia delante y, además de permitir el procesamiento de datos en tiempo real, se pudiera combinar con otro tipo de análisis de información (por un lado el trabajo por lotes y por otro la consulta interactiva de datos). De ahí que la segunda versión de Spark disponga de una API que provee a los programadores de la capacidad para desarrollar aplicaciones que mezclan componentes en tiempo real, interactivos y por lotes.

Para poder trabajar con esta API integrada de Apache Spark 2.0. es necesario que el equipo de desarrollo configure un almacén de datos con funciones ETL (Extracción, Transformación y Carga). Gracias a esta característica, los desarrolladores tendrán a su alcance el análisis web mediante consultas interactivas de una sesión determinada o, por ejemplo, el uso de aprendizaje automático para la creación de patrones eficaces a partir del entrenamiento con datos antiguos de muestra y luego la incorporación de la información más reciente.

La API DataFrame y la API Datasets quedan unificadas en una única biblioteca para facilitar a los desarrolladores el aprendizaje de los elementos necesarios para programar con ella, sobre todo en dos lenguajes: Java y Scala. No está disponible en sintaxis como Python o R porque no es posible por sus características.

Streaming estructurado de datos

Esta API unificada incorpora la novedad del streaming estructurado de alto nivel en la parte superior del motor Spark SQL. Es esta característica la que permite hacer consultas por lotes (a los datos estáticos en una base de datos), interactivas o en streaming (consultas en tiempo real al flujo de datos entre fuente y base de datos para, por ejemplo, hacer informes o seguimiento de información concreta). 

La idea es que los desarrolladores puedan programar “aplicaciones continuas”, es decir, aplicaciones que requieran de un motor de streaming, pero también una integración con el trabajo por lotes, las consultas interactivas, los sistemas de almacenamiento externos o cualquier cambio en la lógica de negocio. Se podría decir que Apache Spark 2.0. facilita aplicaciones todoterreno a los desarrolladores sin que sea necesario la utilización de varios modelos de programación distintos. Esto ofrece desventajas cuando se quiere trabajar con plataformas o sistemas de terceros proveedores como MySQL o Amazon S3 (Simple Storage Service).

Spark como compilador

Los administradores del proyecto Spark siempre han mostrado su preocupación por aumentar la velocidad, aunque ya sea una tecnología tremendamente veloz. Este requerimiento viene motivado por las peticiones de la propia comunidad, expresadas en las encuestas periódicas para mejorar el proyecto. Spark 2.0. es 10 veces más rápido que su predecesor Spark 1.6. porque sus desarrolladores han hecho un trabajo de limpieza de tareas prescindibles.

Según el propio análisis de sus administradores, la mayoría de los ciclos de un motor de datos suelen gastarse en trabajos inútiles como hacer llamadas a funciones virtuales o de lectura o la escritura de datos intermedios en la memoria caché. Optimizar el uso para evitar ciclos de CPU desperdiciados es un gran paso.

Spark 2.0. se basa en la segunda generación del motor Tungsteno, que se acerca mucho a los principios que rigen el funcionamiento de los compiladores modernos y las bases de datos MPP (bases de datos de procesamiento masivamente paralelo). ¿Cómo lo consiguen? Aprovechan los registros de la CPU para la escritura de datos intermedios y eliminan por completo las llamadas a funciones virtuales. 

Si quieres probar las APIs de BBVA, testéalas aquí.

¡Suscríbete!

Recibe nuestro boletín semanal. No te pierdas nuestros trucos, consejos, artículos y los eventos más innovadores.