Le bug est lié à un changement dans la bibliothèque org.apache.spark.api.java où une méthode devais retourner un Iterable dans la version 1.6 mais doit retourner un Iterator dans la version 2.11
Maintenant que le programme fonctionne on peut essayer de comprendre son fonctionnement.
Pour commencer lors du lancement du programme la classe cds.xmatch.spark.CrossMatch est appellée ce sera notre point de départ.
Fonctionnement de base de Spark avec Java
Fonctionnement crossmatch (EN)
Commande pour modifier le nombre de noeuds :
docker service scale spark-worker=5
Attention ces tests sont effectués sur 6 machines de bureau dont la configuration et les logiciels (ou services) installés peuvent influer sur les résultats. Pour avoir des résultats plus fiables il faudrais avoir des serveurs dédiés à Docker.
Est-il efficace de démarer énormément de workers plutot que un par noeud
Ces résultats semblent plus constants (une bonne solution serait peut-être un worker par core)
Docker s’est mis à avoir des bugs à partir de la (normalement corrigés dans la prochaine version qui devrais sortir d’ici peu)
Les différentes machines sont cablées en 100 MBit/s cela constitue le principal facteur limitant comme on peut l’observer sur ce graphique la vitesse du réseau arrive à un palier (entre 11 et 12 Mo/s, par rapport à 12,5 en théorique):
Le réseau un facteur limitant