En utilisant Spring boot et le plugin Maven spring-boot-maven-plugin,
je suis parvenu à déployer une application Spark autonome et auto-exécutable qui sur appel d'un service REST réalise les transformations dont j'ai besoin, et produit les résultats que j'attends.
À présent, il me faut la mettre en cluster, car elle n'a pour le moment qu'un seul noeud.
Aujourd'hui, mon application a ce fichier de configuration-ci au démarrage :
Et ceux-ci servent dans la construction de mon sparkConf, associé à mon SparkContext :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 spark.home=. master.uri=local server.port = 9090
J'ai également dans mon fichier de propriétés un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SparkConf sparkConf = new SparkConf().setAppName("Mon application").setSparkHome(this.sparkHome).setMaster(this.masterUri);
Mais qui n'est employé à rien, et n'a pas d'effet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part deploy.mode=cluster
Lorsque l'application s'exécute, si je vais sur la page d'administration spark/jobs, je vois un job et les RDD qui vivent, mais pas de cluster ni de workers.
Comme l'application est déployée et déjà prête à faire le boulot sur commande, il n'y pas d'instructions shell
spark-master ou spark-submit à lancer en complément. Son fichier de propriétés semble suffire.
Dès qu'elle est déployée, elle peut fonctionner. Ça, je trouve que c'est un très grand agrément de Spring boot.
Mais maintenant, j'aimerais déployer cette application sur d'autres instances, en faisant varier le fichier de configuration, pour qu'elles puissent se mettre en cluster.
Comment dois-je m'y prendre ?
1) Dois-je déclarer une de mes machines Spark, arbitrairement, comme master et faire pointer toutes les autres dessus ?
2) Cette machine master a t-elle le droit d'avoir l'application elle aussi, ou doit-elle au contraire être vide, et ne contenir que Spark ?
3) Pourquoi un logiciel comme Zookeeper peut-il intervenir ? Il aurait l'air de pouvoir déclarer le cluster Spark à la place de Spark ? Ou je me trompe du tout au tout ?
De quelle manière, et pourquoi serait-ce intéressant ?
Merci beaucoup de votre aide,
je suis en défrichage, là. J'essaie de comprendre et de ranger les choses.
Partager