2017-08-28 5 views
2

J'essaye de configurer un groupe d'étincelles de 2 machines. Je le configure en utilisant deux machines invitées VirtualBox Ubutnu 16.04 sur l'hôte Windows. Master est Ubuntu 16.04 Guest sur Windows 10 hôte et Slave est Ubuntu 16.04 Invité sur Windows 7 Host.La connexion Spark Master se ferme avec une demande en attente de Spark Slave

je l'ai fait les choses suivantes:

  • mot de passe de configuration moins ssh sur les deux machines.
  • Configuration Java et Spark sur les deux machines
  • variables de chemin d'installation sur les deux machines
  • Ajouter à la fois IP de la machine à/etc/d'accueil sur les deux machines
  • Ajouter SPARK_MASTER_IP = 'master_ip' sur fichier conf/étincelle de la machine esclave -env.sh fichier

Maintenant, quand je démarre le maître, il se déclenche à droite. Je peux accéder à l'interface Web du Spark Master sur master_ip: 8080.

Mais quand je suis en train de commencer un nœud esclave de la machine esclave à l'aide sudo ./start-slave.sh master_ip:8080 ce qui suit se produit:

Le travailleur esclave est démarré et je peux accéder à ses interface Web à slave_ip: 8081, mais le travailleur esclave ne parvient pas à se connecter au maître et n'est pas affiché sur l'interface utilisateur Web master Spark avec l'erreur suivante dans le fichier journal des travailleurs:

Slave Log 1 Je ne peux pas poster plus de deux liens vers je ne suis pas en mesure d'afficher l'esclave complet log

Master Log

Slave Connexion

Spark Command: /usr/lib/jvm/java-8-oracle/jre//bin/java -cp /home/clusterslave/spark/spark-2.2.0-bin-hadoop2.7/conf/:/home/clusterslave/spark$ 
    ======================================== 
    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
    17/08/29 00:41:32 INFO Worker: Started daemon with process name: [email protected] 
    17/08/29 00:41:32 INFO SignalUtils: Registered signal handler for TERM 
    17/08/29 00:41:32 INFO SignalUtils: Registered signal handler for HUP 
    17/08/29 00:41:32 INFO SignalUtils: Registered signal handler for INT 
    17/08/29 00:41:32 WARN Utils: Your hostname, clusterslave-VirtualBox resolves to a loopback address: 127.0.0.1; using master_ip instead ($ 
    17/08/29 00:41:32 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address 
    17/08/29 00:41:33 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
    17/08/29 00:41:33 INFO SecurityManager: Changing view acls to: root 
    17/08/29 00:41:33 INFO SecurityManager: Changing modify acls to: root 
    17/08/29 00:41:33 INFO SecurityManager: Changing view acls groups to: 
    17/08/29 00:41:33 INFO SecurityManager: Changing modify acls groups to: 
    17/08/29 00:41:33 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); $ 
    17/08/29 00:41:34 INFO Utils: Successfully started service 'sparkWorker' on port 38929. 
    17/08/29 00:41:34 INFO Worker: Starting Spark worker slave_ip:38929 with 4 cores, 5.8 GB RAM 
    17/08/29 00:41:34 INFO Worker: Running Spark version 2.2.0 
    17/08/29 00:41:34 INFO Worker: Spark home: /home/clusterslave/spark/spark-2.2.0-bin-hadoop2.7 
    17/08/29 00:41:34 INFO Utils: Successfully started service 'WorkerUI' on port 8081. 
    17/08/29 00:41:34 INFO WorkerWebUI: Bound WorkerWebUI to 0.0.0.0, and started at http://slave_ip:8081 
    17/08/29 00:41:34 INFO Worker: Connecting to master master_ip:8080... 
    17/08/29 00:41:34 INFO TransportClientFactory: Successfully created connection to /master_ip:8080 after 105 ms (0 ms spent in bootstraps) 
    17/08/29 00:41:34 ERROR TransportResponseHandler: Still have 1 requests outstanding when connection from /master_ip:8080 is closed 
    17/08/29 00:41:34 WARN Worker: Failed to connect to master master_ip:8080 
    org.apache.spark.SparkException: Exception thrown in awaitResult: 
      at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:205) 
      at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75) 
      at org.apache.spark.rpc.RpcEnv.setupEndpointRefByURI(RpcEnv.scala:100) 
      at org.apache.spark.rpc.RpcEnv.setupEndpointRef(RpcEnv.scala:108) 
      at org.apache.spark.deploy.worker.Worker$$anonfun$org$apache$spark$deploy$worker$Worker$$tryRegisterAllMasters$1$$anon$1.run(Worker.s$ 
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
      at java.lang.Thread.run(Thread.java:748) 
    Caused by: java.io.IOException: Connection from /master_ip:8080 closed 
      at org.apache.spark.network.client.TransportResponseHandler.channelInactive(TransportResponseHandler.java:146) 
      at org.apache.spark.network.server.TransportChannelHandler.channelInactive(TransportChannelHandler.java:108) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:241) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:227) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:220) 
      at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75) 
      at io.netty.handler.timeout.IdleStateHandler.channelInactive(IdleStateHandler.java:278) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:241) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:227) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:220) 
      at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:241) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:227) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:220) 
      at io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:75) 
      at org.apache.spark.network.util.TransportFrameDecoder.channelInactive(TransportFrameDecoder.java:182) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:241) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:227) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:220) 
      at io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1289) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:241) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:227) 
      at io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:893) 
      at io.netty.channel.AbstractChannel$AbstractUnsafe$7.run(AbstractChannel.java:691) 
      at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399) 
      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446) 
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131) 
      at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) 
      ... 1 more 
17/08/29 00:41:42 INFO Worker: Retrying connection to master (attempt # 1) 

Voici fonctionnent très bien:

  • Mot de passe moins ssh vers et depuis les deux machines
  • Ping aux ports des deux machines en utilisant la commande nc -v ip port réussit
    • De l'esclave au maître: Connecting to master_ip:8080 port [tcp/http-alt] succeeded!
    • de maître à esclave: Connecting to slave_ip:8081 port [tcp/tproxy] succeeded!

J'ai aussi essayé laisser tomber les pare-feu sur les deux machines. Le problème persiste néanmoins

Aidez-moi à résoudre ce problème. Merci.

+0

Spark maître hôte est de Windows 10 et Spark hôte esclave est Windows 7 alors que les deux sont en cours d'exécution sur des clients Ubuntu 16.04 dans VirtualBox –

+0

Vous devez publier le texte des journaux relvant dans le corps de la question. Les liens hors site vont pourrir, rendant cette question moins utile pour les autres. – jdv

+0

Veuillez ne pas mettre à jour la question en utilisant des commentaires. EDIT le corps de la question et mettre des informations supplémentaires de cette façon. – jdv

Répondre

0

Vous devez autoriser tout le réseau tcp entre deux machines, désactiver le pare-feu et essayer sans noms DNS juste donner l'adresse IP directement, je suggère d'essayer d'abord deux VM sur le même hôte, pour exclure les problèmes de réseau. Tu n'essayes pas de docker.

Pour votre cas d'utilisation suivre les étapes suivantes:

sur le maître classe étincelle bin/org.apache.spark.deploy.master.Master --ip 10.10.10.01 comme dans le lien https://github.com/2dmitrypavlov/sparkDocker/blob/master/master_ip.sh

puis démarrez l'esclave sur le maître comme vous voulez utiliser ses ressources et assurez-vous, sur un vm esclave peut se connecter à lui. bin/classe d'allumage étincelle org.apache.spark.deploy.worker.Worker: //10.10.10.01: 7077 --webui port 8081

après cela fonctionne faire la même chose sur la deuxième vm:

bin/spark-class org.apache.spark.deploy.worker.Worker étincelle: //10.10.10.01: 7077 --webui-port 8081

Allez un pas à la fois, de cette façon, il sera plus facile de trouver un problème. Si vous décidez d'utiliser un docker, voici l'image https://github.com/2dmitrypavlov/sparkDocker avec les instructions.

+0

Merci pour votre réponse monsieur. Comment autoriser tout le réseau tcp entre deux machines? –

+0

J'ai essayé d'utiliser l'image docker sur https://github.com/2dmitrypavlov/sparkDocker mais je ne vois aucun esclave connecté au maître après l'exécution de la commande de l'esclave. –

+0

J'ai essayé les commandes que vous avez mentionnées après avoir remplacé 10.10.10.01 par master_ip et j'obtiens les mêmes résultats. les mêmes erreurs –

0

Vous devez exporter SPARK_MASTER_HOST=(master ip) au lieu de SPARK_MASTER_IP dans le fichier spark-env.sh de maître et esclave, également exporter SPARK_LOCAL_IP dans les deux