Apache Spark est un système généraliste de parallélisation de données et de calculs. Héritier du paradigme de programmation MapReduce exploité dans Hadoop, il est conçu pour être capable de traiter efficacement de très grands volumes de données. A la différence de MapReduce, le modèle d’exécution de Spark conserve les jeux de données en mémoire (distribuée), ce qui améliore massivement les performances des workflows. Les cas d’usage sont en conséquence beaucoup plus larges que ceux de MapReduce.
Les problèmes traités par Spark peuvent être de toute taille, en fonction de la taille du cluster qui l’exécute :
Le cluster Spark actuel comprend 9 machines de 18 coeurs chacune, avec au total 35 TO de stockage HDFS.
Un projet de R&D spécifique consiste à créer des clusters Spark à la demande, sous forme de machines virtuelles, à l’intérieur de Cloud@VD. Ces machines virtuelles seront pré-configurées de façon à être génériques et pouvoir être utilisées par tous. Le projet a été financé en partie par le programme ERM 2017.
Plusieurs projets de R&D sont menés sur le cluster Spark.
Expérience d’astrophysique (AstroLab Software): connecteur Apache Spark pour FITS (spark-fits), méthodes de calcul distribué (spark3D), et interopérabilité entre langages (Interfaces). Les travaux sont principalement dirigés autour du futur telescope LSST.
Génomique : expérimentation sur l’analyse du génome complet.
Informatique : déploiement de bases de données à la volée sur le cloud via notebook Jupyter-Scala
Ecologie : Utilisation de Spark-shell pour la parallélisation facile de calculs en R ; réalisation d’un cluster Spark à coût très réduit pour des conditions d’exploitation minimales.
En fonction des besoins, elle peut se faire :