En posts anteriores hemos hablado sobre Spark y sus capacidades para el procesamiento de grandes volúmenes de datos. Sin embargo, con la llegada de las arquitecturas serverless, surge la pregunta: ¿es siempre mejor utilizar Spark?
En este post, exploraremos los principales resultados de un artículo presentado por el grupo de investigación CloudLab de la URV, que presenta algunas tareas donde FaaS (Function as a Service) puede superar a Spark en términos de rendimiento, coste y eficiencia. Puedes consultar el artículo completo aquí.
Ventajas y desventajas de Spark
Por lo general, Spark es una excelente opción para el procesamiento de grandes volúmenes de datos, especialmente cuando se puede dimensionar correctamente el clúster. El precio por hora de un clúster de Spark suele ser bastante más económico que el de FaaS, lo que lo convierte en una opción atractiva para tareas que requieren un procesamiento intensivo y prolongado.
Sin embargo, Spark tiene algunas desventajas como pueden ser la complejidad de su gestión o ineficiencias con tareas relativamente cortas.
Ventajas y desventajas de FaaS
Por el contrario, FaaS (Function as a Service) ofrece un modelo de ejecución más flexible y escalable. FaaS destaca por su escalabilidad automática, pago por uso y simplicidad en la gestión, facilitando el desarrollo y la ejecución eficiente de tareas bajo demanda.
Sin embargo, FaaS también tiene desventajas, como el tiempo de arranque de las funciones o un mayor coste por hora en comparación con Spark para tareas de larga duración.
FaaS brilla cuando Spark flaquea
En el artículo, se presentan una serie de algoritmos desbalanceados que muestran que a veces es imposible dimensionar correctamente un cluster de Spark para una tarea concreta, debido a la naturaleza de la tarea. En estos casos, la gran escalabilidad de FaaS y su modelo de pago por uso nos ofrecen una alternativa más eficiente y económica.
En particular, el Unbalance Tree Search (UTS) es un ejemplo de un algoritmo que se beneficia enormemente de las ventajas de FaaS. UTS es un algoritmo de búsqueda que puede ser altamente desbalanceado, lo que significa que algunas ramas del árbol pueden requerir mucho más tiempo de procesamiento que otras. En estos casos, FaaS permite ejecutar las ramas más largas en paralelo sin necesidad de dimensionar un clúster completo de Spark. En cambio, Spark sobredimensiona o infradimensiona el clúster, lo que puede resultar en un uso ineficiente de los recursos y un mayor coste o un rendimiento deficiente.
Conclusiones
En resumen, aunque Spark es una herramienta poderosa para el procesamiento de grandes volúmenes de datos, no siempre es la mejor opción. FaaS ofrece ventajas significativas en términos de escalabilidad, flexibilidad y coste para tareas específicas, especialmente aquellas que son desbalanceadas o de corta duración.
Como siempre, la elección de nuestras herramientas en el cloud debe basarse en las necesidades específicas de nuestras aplicaciones y cargas de trabajo. Y, aparte del coste bruto, también debemos considerar otros factores como el tiempo de desarrollo, la complejidad de la gestión, la escalabilidad o el modelo de pago.
¿Has probado FaaS para tareas que tradicionalmente se harían con Spark? ¿Qué resultados has obtenido? ¡Comparte tu experiencia en los comentarios!



Leave a Reply