web-dev-qa-db-fra.com

Impossible de se lier à: spark-master, à l'aide d'un cluster distant avec deux employés

Je parviens à tout faire fonctionner avec le maître local et deux télétravailleurs. Maintenant, je veux me connecter à un maître distant qui a les mêmes travailleurs distants. J'ai essayé différentes combinaisons de paramètres avec/etc/hosts et d'autres recommandations sur Internet, mais RIEN n'a fonctionné.

La classe principale est:

public static void main(String[] args) {
    ScalaInterface sInterface = new ScalaInterface(CHUNK_SIZE,
            "awsAccessKeyId",
            "awsSecretAccessKey");

    SparkConf conf = new SparkConf().setAppName("POC_Java_AND_SPARK")
            .setMaster("spark://spark-master:7077");

    org.Apache.spark.SparkContext sc = new org.Apache.spark.SparkContext(
            conf);

    sInterface.enableS3Connection(sc);
    org.Apache.spark.rdd.RDD<Tuple2<Path, Text>> fileAndLine = (RDD<Tuple2<Path, Text>>) sInterface.getMappedRDD(sc, "s3n://somebucket/");

    org.Apache.spark.rdd.RDD<String> pInfo = (RDD<String>) sInterface.mapPartitionsWithIndex(fileAndLine);

    JavaRDD<String> pInfoJ = pInfo.toJavaRDD();

    List<String> result = pInfoJ.collect();

    String miscInfo = sInterface.getMiscInfo(sc, pInfo);

    System.out.println(miscInfo);

}

Il échoue à:

List<String> result = pInfoJ.collect();

L'erreur que je reçois est:

1354 [sparkDriver-akka.actor.default-dispatcher-3] ERROR akka.remote.transport.netty.NettyTransport  - failed to bind to spark-master/192.168.0.191:0, shutting down Netty transport
1354 [main] WARN  org.Apache.spark.util.Utils  - Service 'sparkDriver' could not bind on port 0. Attempting port 1.
1355 [main] DEBUG org.Apache.spark.util.AkkaUtils  - In createActorSystem, requireCookie is: off
1363 [sparkDriver-akka.actor.default-dispatcher-3] INFO  akka.remote.RemoteActorRefProvider$RemotingTerminator  - Shutting down remote daemon.
1364 [sparkDriver-akka.actor.default-dispatcher-3] INFO  akka.remote.RemoteActorRefProvider$RemotingTerminator  - Remote daemon shut down; proceeding with flushing remote transports.
1364 [sparkDriver-akka.actor.default-dispatcher-5] INFO  akka.remote.RemoteActorRefProvider$RemotingTerminator  - Remoting shut down.
1367 [sparkDriver-akka.actor.default-dispatcher-4] INFO  akka.event.slf4j.Slf4jLogger  - Slf4jLogger started
1370 [sparkDriver-akka.actor.default-dispatcher-6] INFO  Remoting  - Starting remoting
1380 [sparkDriver-akka.actor.default-dispatcher-4] ERROR akka.remote.transport.netty.NettyTransport  - failed to bind to spark-master/192.168.0.191:0, shutting down Netty transport
Exception in thread "main" 1382 [sparkDriver-akka.actor.default-dispatcher-6] INFO  akka.remote.RemoteActorRefProvider$RemotingTerminator  - Shutting down remote daemon.
1382 [sparkDriver-akka.actor.default-dispatcher-6] INFO  akka.remote.RemoteActorRefProvider$RemotingTerminator  - Remote daemon shut down; proceeding with flushing remote transports.
Java.net.BindException: Failed to bind to: spark-master/192.168.0.191:0: Service 'sparkDriver' failed after 16 retries!
    at org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.Java:272)
    at akka.remote.transport.netty.NettyTransport$$anonfun$listen$1.apply(NettyTransport.scala:393)
    at akka.remote.transport.netty.NettyTransport$$anonfun$listen$1.apply(NettyTransport.scala:389)
    at scala.util.Success$$anonfun$map$1.apply(Try.scala:206)
    at scala.util.Try$.apply(Try.scala:161)
    at scala.util.Success.map(Try.scala:206)
    at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
    at scala.concurrent.Future$$anonfun$map$1.apply(Future.scala:235)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
    at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.processBatch$1(BatchingExecutor.scala:67)
    at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply$mcV$sp(BatchingExecutor.scala:82)
    at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
    at akka.dispatch.BatchingExecutor$Batch$$anonfun$run$1.apply(BatchingExecutor.scala:59)
    at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:72)
    at akka.dispatch.BatchingExecutor$Batch.run(BatchingExecutor.scala:58)
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.Java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.Java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.Java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.Java:107)
1383 [sparkDriver-akka.actor.default-dispatcher-7] INFO  akka.remote.RemoteActorRefProvider$RemotingTerminator  - Remoting shut down.
1385 [delete Spark temp dirs] DEBUG org.Apache.spark.util.Utils  - Shutdown hook called

Merci de votre aide!

22
Damir Olejar

La définition de la variable d'environnement SPARK_LOCAL_IP = 127.0.0.1 a résolu ce problème pour moi.

55
Travis Carlson

J'ai eu ce problème lorsque mon /etc/hosts le fichier mappait la mauvaise adresse IP à mon nom d'hôte local.

BindException dans vos journaux se plaint de l'adresse IP 192.168.0.191. Je suppose que cela résout le nom d'hôte de votre machine et c'est pas l'adresse IP réelle que votre interface réseau utilise. Cela devrait bien fonctionner une fois que vous aurez corrigé cela.

12
Costi Ciudatu

J'avais spark travaillant dans mon instance EC2. J'ai commencé un nouveau serveur Web et pour répondre à ses exigences, j'ai dû changer le nom d'hôte en nom DNS public ec2, c'est-à-dire.

hostname ec2-54-xxx-xxx-xxx.compute-1.amazonaws.com

Après cela, mon spark ne pouvait pas fonctionner et a montré une erreur comme ci-dessous:

16/09/20 21:02:22 WARN Utils: Le service 'sparkDriver' n'a pas pu se lier sur le port 0. Tentative de port 1. 16/09/20 21:02:22 ERREUR SparkContext: Erreur lors de l'initialisation de SparkContext.

Je le résout en définissant SPARK_LOCAL_IP comme ci-dessous:

export SPARK_LOCAL_IP="localhost"

puis vient de lancer Shell pétillant comme ci-dessous:

$SPARK_HOME/bin/spark-Shell
5
AvkashChauhan

Votre maître fonctionne peut-être sur un port autre que celui par défaut. Pouvez-vous publier votre commande de soumission? Jetez un œil à https://spark.Apache.org/docs/latest/spark-standalone.html#connecting-an-application-to-the-cluster

1
ayan guha