Table of Contents |
---|
Introducción
En este trimestre hemos comenzado con esta funcionalidad que continuaremos durante Q3. En el trimestre nos hemos centrado en el despliegue embebido de un cluster Spark junto con Plataforma junto con sus herramientas de visualización de jobs, además de en poder enviar jobs Spark a través de las herramientas de plataforma.
En la próxima release continuaremos trabajando en la integración de otros clusters (pj servicios de diferentes Clouds) y mejoras la integración con plataforma.
Análisis técnico
Elección del cluster de Spark
Spark permite distintos tipos de despliegues para cluster, entre los que tenemos: Standalone, Kubernetes, YARN y Mesos.
En primera instancia daremos la posibilidad de crear un cluster Standalone desplegado en Kubernetes. Esto tiene las ventajas de que tenemos elementos ya definidos como master y workers, pudiendo definir una infraestructura más fácil de gestionar. También nos facilita el acceso a las UIs y logs de cada nodo, ya que cada uno tendrá siempre una única función en el cluster. En futuras versiones añadiremos la posibilidad de conectarnos a Servicios de Spark como los de GCP Databricks, etc.
Versión e imagen de Spark
Vamos a crear una imagen de Spark 3.2.1 con soporte Hadoop 3.2 y AWS S3.
Esta imagen es custom de plataforma, para poder integrar nuestro MinIO como almacén de procesos (jars), facilitando el despliegue y ejecución de procesos Spark desde Plataforma.
Integración de Logs
También integraremos los logs de todos los elementos de Spark (Workers y Master) a Graylog. Para ello se ha añadido un conector UDP que agiliza la recolección de logs que ya teníamos. El resto de módulos podrán ser configurados para usar dicho conector. Esto nos permite ver en una única herramienta todos los logs de Spark.
...
Unificación de UI y seguridad
Si alguna vez habéis accedido a la UI de Spark, sabréis que cada nodo tiene su propia UI en puertos definidos por el administrador del cluster, lo que hace poder navegar por estas UIs fuera del cluster bastante tedioso (teniendo que abrir puertos, túneles, etc.). Para facilitar el acceso, navegación y uso, desde plataforma vamos a ofrecer acceso a dichas UIs (Master y workers) desde fuera del cluster.
Dado que permitiremos el uso de estas UIs desde plataforma, hemos creado un plugin de seguridad haciendo uso del token oauth generado por plataforma, para que solamente sus usuarios puedan acceder desde el propio ControlPanel.
...
Ejecución de procesos Spark en plataforma
Para facilitar el lanzamiento de procesos Spark en plataforma nos vamos a apoyar en el uso de MinIO.
...
También tendremos en futuras versiones la posibilidad de configurar el módulo de Notebooks para que lance sus procesos Spark contra el cluster.
¡Esto es solo el principio!
En este Q2 solamente estamos empezando a integrar funcionalidades básicas. La idea es continuar en esta linea, permitiendo más y mejores funcionalidades como:
...