web-dev-qa-db-fra.com

Spark Standalone Cluster - L'esclave ne se connecte pas au maître

J'essaie de configurer un cluster autonome Spark en suivant la documentation officielle.

Mon maître est sur une machine virtuelle locale sous Ubuntu et un de mes employés s'exécute également sur le même ordinateur. Il est en train de se connecter et je peux voir son statut dans l'interface Web du maître.

Voici l'image WebUi -

enter image description here

Mais lorsque j'essaie de connecter un esclave d'une autre machine, je ne peux pas le faire.

C’est le message de journal que j’obtiens dans le travailleur lorsque je démarre à partir d’une autre machine ..__J'ai essayé d’utiliser start-slaves.sh du maître après la mise à jour de conf\slaves et de start-slave.sh spark://spark:7077 de l’esclave.

[Nom d'hôte principal - spark; Hostanme travailleur - travailleur]

15/07/01 11:54:16 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@spark:7077] has failed, address is now gated for [5000] ms. Reason is: [Association failed with [akka.tcp://sparkMaster@spark:7077]].
15/07/01 11:54:59 ERROR Worker: All masters are unresponsive! Giving up.
15/07/01 11:54:59 INFO Utils: Shutdown hook called

Quand j'essaye de faire un telnet de l'esclave au maître, c'est ce que je reçois -

root@worker:~# telnet spark 7077
Trying 10.xx.xx.xx...
Connected to spark.
Escape character is '^]'.
Connection closed by foreign Host.

Telnet semble fonctionner mais la connexion est fermée dès son établissement. Cela pourrait-il avoir quelque chose à voir avec le problème?

J'ai ajouté les adresses IP maître et esclave dans/etc/hosts sur les deux machines ..__ J'ai suivi toutes les solutions données dans Cluster autonome/- SPARK + Standalone: ​​impossible de démarrer un utilisateur depuis une autre machine a travaillé pour moi.

J'ai la configuration suivante définie dans spark-env.sh dans les deux machines -

export SPARK_MASTER_IP = spark 

exportation SPARK_WORKER_PORT = 44444

Toute aide est grandement appréciée.

11
Mor Eru

Je rencontre exactement le même problème que vous et découvrez comment le faire fonctionner. 

Le problème est que votre maître des étincelles écoute le nom d’hôte, dans votre exemple spark , ce qui permet au travailleur du même hôte de s’enregistrer avec succès mais échoue à partir d’un autre ordinateur avec la commande start-slave.sh spark://spark:7077.

La solution consiste à vérifier que la valeur SPARK_MASTER_IP est spécifiée avec ip dans le fichier conf/spark-env.sh

    SPARK_MASTER_IP=<your Host ip>

sur votre nœud maître et démarrez votre maître des étincelles comme d’habitude. Vous pouvez ouvrir votre interface graphique Web pour vous assurer que votre maître des étincelles apparaît sous la forme spark: // YOUR_Host_IP: 7077 après le début. Ensuite, sur une autre machine avec la commande start-slave.sh spark://<your Host ip>:7077 Devrait démarrer et inscrire le travailleur à maîtriser avec succès.

J'espère que cela vous aiderait 

21
user1600668

Cela dépend de votre version d'étincelle, il aura besoin d'une configuration différente .. si votre version d'étincelle 1.6 ajoute cette ligne à conf/spark-env.sh afin qu'une autre machine puisse se connecter au maître

SPARK_MASTER_IP = your_Host_ip

et si votre version d'allumage est 2.x, ajoutez ces lignes à votre conf/spark-env.sh

SPARK_MASTER_Host = your_Host_ip

SPARK_LOCAL_IP = your_Host_ip

après avoir ajouté ces lignes, exécutez spark:

./sbin/spark-all.sh

et si vous le faites bien, vous pouvez voir dans <your_Host_ip>:8080 que l’URL du maître des étincelles est: spark://<your_Host_ip>:7077

BeCarefule your_Host_ip, ne devrait pas être localhost et doit être exactement Your Host ip que vous avez défini dans conf/spark-env.sh

après tout, vous pouvez connecter une autre machine au maître avec la commande ci-dessous:

./sbin/start-slave.sh spark: // your_Host_ip: 7077

11
Hamid

Je viens de lancer mon propre cluster à étincelles avec la version 2.10. La façon dont j'ai résolu mon problème est la suivante:

 ./sbin/start-master.sh -h <your_ip>
1
zhexuany

Toutes les solutions ci-dessus ne fonctionnaient pas pour moi, mais j'ai trouvé un autre moyen de résoudre le problème: Stackoverflow: l'étincelant ne se connectant pas au maître

Veuillez vérifier le fichier de configuration "spark-env.sh" sur votre noeud master. Avez-vous défini la variable SPARK_MASTER_Host sur l'adresse IP du noeud maître? Si ce n'est pas le cas, essayez de le configurer et de redémarrer le maître et les esclaves. Par exemple, si l'adresse IP de votre nœud maître est 192.168.0.1, vous devez indiquer SPARK_MASTER_Host = 192.168.0.1. Notez que vous n'avez pas besoin de définir cette variable sur vos esclaves.

0
DmitryZyr