Introducción a Apache Spark
Tal como se define oficialmente Apache Spark, esto sería en una única frase una breve definición:
Apache Spark™ es un motor multi lenguaje para la ejecución de ingeniería de datos, data science y machine learning tanto en máquinas de un solo nodo como en cluster.
Apache Spark Official Site
Bajo esta definición se encuentra uno de los proyectos Apache con mayor actividad en su comunidad de usuarios y desarrolladores. Sin duda alguna, Spark se ha convertido en la actualidad en el motor de computación escalable más utilizado a nivel mundial.
Su adopción masiva ha venido de la mano de algunas características que hacen que sea beneficioso su uso en múltiples escenarios:
- Capacidad para procesar tanto procesos en batch como en streaming.
- Soporte para múltiples lenguajes: Java, Scala, Python y R.
- Librerías que facilitan el desarrollo de aplicaciones específicas, como Spark SQL y MLib.
Con esta breve descripción se puede concluir que son muchos los entornos donde sería beneficioso el uso de Spark, pero ¿en todos los casos merece la pena su integración?
Integración
De manera general existen dos motivaciones para acometer la integración de Apache Spark en un Data Warehouse corporativo:
- Necesidad de mejora de rendimiento.
- Necesidad de uso de técnicas de análisis de datos avanzadas.
En ambos casos se puede afirmar que la utilidad de la integración de Spark vendrá asociado al volumen de datos gestionados en el Data Warehouse. Es decir, a mayor cantidad de información gestionada mayor beneficio se obtendrá. Para volúmenes pequeños, la aplicación de soluciones más sencillas puede aportar los beneficios esperados, con una menor complicación en la arquitectura del DW.
En el supuesto de que nuestro Data Warehouse contenga un volumen de información elevado, se puede afrontar una integración de Apache Spark que a buen seguro aportará beneficios. En los siguientes apartados se presentan las dos alternativas más comunes en estos trabajos de integración:
- Integrar Spark en un Data Warehouse existente.
- Diseñar una nueva arquitectura para el Data Warehouse.
Integrar Apache Spark en un DW existente
Esta opción conlleva que tanto el esfuerzo como los riesgo se minimicen, de manera que en un corto espacio de tiempo se puedan tener beneficios en la explotación del sistema. La facilidad de integración viene dada, en parte, por el amplio conjunto de productos con soporte directo para Apache Spark, entre otros:
- Data Science y Machine Learning: Scikit Learn, pandas, TensorFlow, PyTorch,…
- Análisis SQL y BI: Power Bi, Tableau, Apache Superset, …
- Almacenamiento e infraestructura: MS SQL Server, Cassandra, mongoDB, Kafka, elasticsearch, Apache Airflow, …
Sin embargo, la integración de Spark en un DW diseñado para una explotación convencional implica que determinadas ventajas sean complicadas de conseguir. Por ejemplo, el diseño del DW existente ha podido obviar requerimientos de almacenamiento que Apache Spark necesite para ejecutar algoritmos de análisis de manera óptima en máquinas de múltiples nodos.
En definitiva, en estos casos se obtendrán ventajas que dependerán de la arquitectura original del DW.
Nuevo diseño integranda Apache Spark
Si se opta, en el caso de que sea posible, por un nuevo diseño de Data Warehouse en el que incluir de manera directa el uso de Apache Spark, habrá mayores posibilidades de obtener mejores rendimientos y resultados.
Teniendo en cuenta los «casos de uso» a los que dará cabida la nueva arquitectura, se podrán obtener mejoras en el rendimiento ajustando la configuración de los componentes de la plataforma a los requerimientos de los algoritmos de machine learning elegidos en la solución propuesta. Por ejemplo, se podrá separar el procesamiento por lotes pequeños, típicamente eficiente en Spark, del de complejos bloques de información que pueden ser gestionados con mejor rendimiento en Hadoop o productos similares.
Un aspecto fundamental que permitirá partir de cero en el diseño es el de incluir la escalabilidad y elasticidad del sistema como requisito indispensable. Esto logrará que tanto los procesos más simples de ETL como los algoritmos más pesados de ML puedan tener cabida en la misma plataforma, sin que se caiga en una mala gestión de recursos de cómputo. Con proveedores que permiten escalar de manera dinámica los recursos de su DW (Snowflake, Azure SQL DW, …) se hace sencillo mantener unos costes bajos sin que se vea mermado el rendimiento.
Conclusiones
Los escenarios en los que Apache Spark puede aportar ventajas en rendimiento o capacidad de análisis a un Data Warehouse son variados y heterogéneos. Pero es en el caso de sistemas con gran volumen de datos donde se podrán obtener todos sus beneficios, especialmente si se diseña desde un principio la arquitectura del Data Warehouse para tener en cuenta los requisitos propios de Spark.