J'ai installé un système comme suit:Mesos Spark Slave a essayé de se connecter au maître privé IP au lieu de IP publique
IP privé de maître dede 10.xx2, Public 35.xx6
- IP privée esclave mésos de 192.xx10, Public 111.xx2
Maintenant que le maître a correctement affecté la tâche à l'esclave, la tâche a échoué. Le message d'erreur est comme suit:
Exception dans le thread "principal" 17/10/11 22:38:01 erreur RpcOutboxMessage: Demandez délai d'attente avant de connecter avec succès
Causée par: org.apache.spark .rpc.RpcTimeoutException: ne peut pas recevoir aucune réponse en 120 secondes. Ce délai est contrôlé par spark.rpc.askTimeout
Quand je regarde l'environnement, les points spark.driver.host à l'adresse IP privée du maître 10.xx2 au lieu de l'adresse IP publique 35 .xx6. Je regarde la capture de Wireshark et en effet, il y avait un paquet TCP échoué à l'adresse IP privée principale.
Maintenant, si je mets spark.driver.bindAddress du maître à son adresse IP locale, spark.driver.host du maître à son adresse IP publique, je reçois le message suivant.
erreur TaskSchedulerImpl: Lost exécuteur 1 sur myhostname.singnet.com.sg: Impossible de créer l'exécuteur en raison de ne peut pas attribuer adresse demandée:
De ma compréhension, le spark.driver.bindAddress Réglez-le à la fois pour le maître et l'esclave, d'où l'esclave obtenir la dite erreur. Maintenant, je me demande vraiment comment faire pour configurer correctement la mise en cluster sur IP public?
Merci d'avoir répondu. En ce qui concerne ma connaissance du réseau, je ne vois pas de scénario où je peux avoir une configuration publique. Chaque machine exposée à une adresse IP publique est assignée à une adresse privée pour son réseau interne. L'IP publique n'est pas la machine elle-même mais sur le routeur (corrigez-moi si je me trompe). Mesos a résolu ce problème en incluant le paramètre --advertise_IP afin que les machines puissent se trouver en se connectant à cette adresse (qui est publique). Je ne suis pas sûr de savoir comment il est mis en œuvre sur Spark. – TheCyberliem
@TheCyberliem sûr. Vérifiez mon ajout à la réponse – Rico
Merci pour la réponse.Cependant, si vous lisez attentivement la description de mon problème, vous verrez que vous ne pouvez pas avoir un paramètre tout public sans IP privé (Comme je l'ai mentionné, l'IP publique n'est jamais sur la machine mais sur le routeur. et le routeur le mappent à IP publique.) – TheCyberliem