web-dev-qa-db-fra.com

Mon employé de Spark ne peut pas connecter Master. Quelque chose ne va pas avec Akka?

Je souhaite installer le mode Spark Standlone sur un cluster avec mes deux machines virtuelles.
Avec la version spark-0.9.1-bin-hadoop1, j’exécute spark-Shell avec succès dans chaque machine virtuelle. Je suis le document officiel pour créer un vm (ip: xx.xx.xx.223) en tant que maître et travailleur et pour rendre l’autre (ip: xx.xx.xx.224) en tant que travailleur.
Mais le 224-ip vm ne peut pas connecter le 223-ip vm . Le journal principal de 223 (maître) est suivi: 

[@tc-52-223 logs]# tail -100f spark-root-org.Apache.spark.deploy.master.Master-1-tc-52-223.out
Spark Command: /usr/local/jdk/bin/Java -cp :/data/test/spark-0.9.1-bin-hadoop1/conf:/data/test/spark-0.9.1-bin-hadoop1/Assembly/target/scala-2.10/spark-Assembly_2.10-0.9.1-hadoop1.0.4.jar -Dspark.akka.logLifecycleEvents=true -Djava.library.path= -Xms512m -Xmx512m org.Apache.spark.deploy.master.Master --ip 10.11.52.223 --port 7077 --webui-port 8080

log4j:WARN No appenders could be found for logger (akka.event.slf4j.Slf4jLogger).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
14/04/14 22:17:03 INFO Master: Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
14/04/14 22:17:03 INFO Master: Starting Spark master at spark://10.11.52.223:7077
14/04/14 22:17:03 INFO MasterWebUI: Started Master web UI at http://tc-52-223:8080
14/04/14 22:17:03 INFO Master: I have been elected leader! New state: ALIVE
14/04/14 22:17:06 INFO Master: Registering worker tc-52-223:20599 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO Master: Registering worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.Apache.spark.deploy.DeployMessages$RegisteredWorker] from Actor[akka://sparkMaster/user/Master#1972530850] to Actor[akka://sparkMaster/deadLetters] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:17:26 INFO Master: Registering worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:26 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.Apache.spark.deploy.DeployMessages$RegisterWorkerFailed] from Actor[akka://sparkMaster/user/Master#1972530850] to Actor[akka://sparkMaster/deadLetters] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:17:46 INFO Master: Registering worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:46 INFO RemoteActorRefProvider$RemoteDeadLetterActorRef: Message [org.Apache.spark.deploy.DeployMessages$RegisterWorkerFailed] from Actor[akka://sparkMaster/user/Master#1972530850] to Actor[akka://sparkMaster/deadLetters] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 INFO LocalActorRef: Message [akka.remote.transport.ActorTransportAdapter$DisassociateUnderlying] from Actor[akka://sparkMaster/deadLetters] to Actor[akka://sparkMaster/system/transports/akkaprotocolmanager.tcp0/akkaProtocol-tcp%3A%2F%2FsparkMaster%4010.11.52.224%3A61550-1#646150938] was not delivered. [4] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 ERROR EndpointWriter: AssociationError [akka.tcp://[email protected]:7077] -> [akka.tcp://sparkWorker@tc_52_224:21371]: Error [Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]] [
akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2: Connection refused: tc_52_224/10.11.52.224:21371
]
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:18:06 ERROR EndpointWriter: AssociationError [akka.tcp://[email protected]:7077] -> [akka.tcp://sparkWorker@tc_52_224:21371]: Error [Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]] [
akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2: Connection refused: tc_52_224/10.11.52.224:21371
]
14/04/14 22:18:06 ERROR EndpointWriter: AssociationError [akka.tcp://[email protected]:7077] -> [akka.tcp://sparkWorker@tc_52_224:21371]: Error [Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]] [
akka.remote.EndpointAssociationException: Association failed with [akka.tcp://sparkWorker@tc_52_224:21371]
Caused by: akka.remote.transport.netty.NettyTransport$$anonfun$associate$1$$anon$2: Connection refused: tc_52_224/10.11.52.224:21371
]
14/04/14 22:18:06 INFO Master: akka.tcp://sparkWorker@tc_52_224:21371 got disassociated, removing it.
14/04/14 22:19:03 WARN Master: Removing worker-20140414221705-tc_52_224-21371 because we got no heartbeat in 60 seconds
14/04/14 22:19:03 INFO Master: Removing worker worker-20140414221705-tc_52_224-21371 on tc_52_224:21371  

Le journal de travail de 223 (Worker) est suivi:

14/04/14 22:17:06 INFO Worker: Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
14/04/14 22:17:06 INFO Worker: Starting Spark worker tc-52-223:20599 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO Worker: Spark home: /data/test/spark-0.9.1-bin-hadoop1
14/04/14 22:17:06 INFO WorkerWebUI: Started Worker web UI at http://tc-52-223:8081
14/04/14 22:17:06 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:17:06 INFO Worker: Successfully registered with master spark://xx.xx.52.223:7077

Le journal de travail de 224 (Worker) est suivi:

Spark Command: /usr/local/jdk/bin/Java -cp :/data/test/spark-0.9.1-bin-hadoop1/conf:/data/test/spark-0.9.1-bin-hadoop1/Assembly/target/scala-2.10/spark-Assembly_2.10-0.9.1-hadoop1.0.4.jar -Dspark.akka.logLifecycleEvents=true -Djava.library.path= -Xms512m -Xmx512m org.Apache.spark.deploy.worker.Worker spark://10.11.52.223:7077 --webui-port 8081
========================================

log4j:WARN No appenders could be found for logger (akka.event.slf4j.Slf4jLogger).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
14/04/14 22:17:06 INFO Worker: Using Spark's default log4j profile: org/Apache/spark/log4j-defaults.properties
14/04/14 22:17:06 INFO Worker: Starting Spark worker tc_52_224:21371 with 1 cores, 4.0 GB RAM
14/04/14 22:17:06 INFO Worker: Spark home: /data/test/spark-0.9.1-bin-hadoop1
14/04/14 22:17:06 INFO WorkerWebUI: Started Worker web UI at http://tc_52_224:8081
14/04/14 22:17:06 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:17:26 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:17:46 INFO Worker: Connecting to master spark://xx.xx.52.223:7077...
14/04/14 22:18:06 ERROR Worker: All masters are unresponsive! Giving up.

Suivi est mon spark-env.sh:

Java_HOME=/usr/local/jdk
export SPARK_MASTER_IP=tc-52-223
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=4g
export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
export SPARK_LOCAL_IP=tc-52-223

J'ai cherché de nombreuses solutions sur Google, mais elles ne peuvent pas fonctionner ... Aidez-moi, s'il vous plaît.

13
FatGhosta

Je ne suis pas sûr que ce soit le même problème que j'ai rencontré, mais vous voudrez peut-être essayer de définir SPARK_MASTER_IP la même chose que ce que spark lie. Dans votre exemple, il semblerait que ce soit 10.11.52.223 et non tc-52-223.

Il devrait être identique à ce que vous voyez lorsque vous visitez l'interface utilisateur Web du nœud principal sur 8080. Quelque chose comme: Spark Master at spark://ec2-XX-XX-XXX-XXX.compute-1.amazonaws.com:7077

9
Klugscheißer

Si vous obtenez une exception "Connexion refusée", vous pouvez la résoudre en vérifiant

=> Master est en cours d'exécution sur l'hôte spécifique

netstat -at | grep 7077

Vous obtiendrez quelque chose de similaire à:

tcp        0      0 akhldz.master.io:7077 *:*             LISTEN  

Si tel est le cas, exécutez un Host akhldz.master.io (remplacez akhldz.master.io par votre hôte maître à partir de votre ordinateur de travail). fichier)
telnet akhldz.master.io 7077 (S'il ne se connecte pas, votre agent ne se connectera pas non plus.)

=> Ajout d'une entrée d'hôte dans/etc/hosts

Ouvrez/etc/hosts à partir de votre ordinateur et ajoutez l'entrée suivante (exemple).

192.168.100.20   akhldz.master.io

PS: Dans le cas ci-dessus, Pillis avait deux adresses IP ayant le même nom d’hôte.

192.168.100.40  s1.machine.org
192.168.100.41  s1.machine.org

J'espère que cette aide.

6
AkhlD

Il y a beaucoup de réponses et de solutions possibles, et cette question est un peu ancienne, mais dans un souci de complétude, il existe un bogue Spark concernant la résolution des noms d'hôte en adresses IP. Je ne présente pas cela comme la réponse complète dans tous les cas, mais je suggère d'essayer avec une ligne de base consistant à utiliser uniquement toutes les adresses IP et à n'utiliser que la configuration unique SPARK_MASTER_IP. Avec juste ces deux pratiques, je fais fonctionner mes clusters et toutes les autres configs, ou en utilisant des noms d’hôtes, semblent tout simplement gâcher les choses.

Ainsi, dans votre fichier spark-env.sh, supprimez SPARK_WORKER_IP et remplacez SPARK_MASTER_IP par une adresse IP, et non par un nom d'hôte.

J'ai traité cela plus en détail dans cette réponse.

Pour plus de complétude, voici une partie de cette réponse:

Pouvez-vous cingler la boîte où le maître Spark est en cours d'exécution? Pouvez-vous cingler le travailleur du maître? Plus important encore, pouvez-vous sans mot de passe SSH au travailleur de la boîte principale? Par 1.5.2 docs vous devez être capable de le faire avec une clé privée ET avoir le travailleur entré dans le fichier conf/slaves. J'ai copié le paragraphe pertinent à la fin.

Vous pouvez obtenir une situation dans laquelle le travailleur peut contacter le maître mais le maître ne peut pas retourner vers le travailleur, il semble donc qu'il n'y ait pas de connexion est fait. Vérifiez les deux directions.

Je pense que le fichier esclave sur le nœud maître et le ssh sans mot de passe peuvent entraîner des erreurs similaires à ce que vous voyez.

D'après la réponse que j'ai réticulée, il y a aussi un ancien bogue mais la manière dont ce bogue a été résolue n'est pas claire.

2
JimLohse

définir le port pour le travailleur d'étincelle également, par exemple: SPARK_WORKER_PORT=5078 ... vérifier le spark-installation link pour une installation correcte

0
Arnav

en gros, vos ports sont bloqués, ce qui réduit les communications de maître à travailleur. vérifier ici https://spark.Apache.org/docs/latest/configuration.html#networking

Dans la section "Mise en réseau", vous pouvez voir que certains des ports sont par défaut random. Vous pouvez les définir à votre choix comme ci-dessous:

val conf = new SparkConf() 
    .setMaster(master) 
    .setAppName("namexxx") 
    .set("spark.driver.port", "51810") 
    .set("spark.fileserver.port", "51811") 
    .set("spark.broadcast.port", "51812") 
    .set("spark.replClassServer.port", "51813") 
    .set("spark.blockManager.port", "51814") 
    .set("spark.executor.port", "51815") 
0
keypoint

Dans mon cas, je pourrais résoudre le problème en ajoutant "l’entrée du nom d’hôte et des adresses IP de localhost au fichier/etc/hosts" comme suit:

Pour un cluster, maître a le contenu/etc/hosts comme suit:

127.0.0.1       master.yourhost.com localhost localhost4 localhost.localdomain
192.168.1.10    slave1.yourhost.com
192.168.1.9     master.yourhost.com **# this line solved the problem**

Ensuite, je fais aussi la même chose sur la machine slave1.yourhost.com.

J'espère que cela t'aides..

0
ridonekorkmaz

J'avais affronté le même problème. vous pouvez le résoudre par la procédure ci-dessous, Tout d’abord, vous devriez aller dans le fichier /etc/hosts et commenter 127.0.1.1 adresse . Ensuite, vous devriez aller dans le répertoire spark/sbin, puis vous devriez lancer la session spark avec cette commande

./start-all.sh 

ou vous pouvez utiliser ./start-master.sh et ./start-slave.sh pour la même chose. Maintenant, si vous exécutez spark-Shell or pyspark ou tout autre composant spark, il créera automatiquement un objet de contexte spark, sc, pour vous.

0
Shubham Sharma