2015-04-27 11 views
22

Sto riuscendo a ottenere tutto ciò che funziona con il master locale e due lavoratori remoti. Ora, voglio collegarmi a un master remoto che ha gli stessi lavoratori remoti. Ho provato diverse combinazioni di impostazioni con/etc/hosts e altre raccomandazioni su Internet, ma NULLA ha funzionato.Impossibile collegarsi a: spark-master, utilizzando un cluster remoto con due worker

La classe principale è:

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); 

} 

Non riesce a:

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

L'errore che sto ottenendo è:

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 

Grazie gentilmente per il vostro aiuto!

+0

nessuna delle risposte qui mi ha aiutato, ma con mia grande sorpresa di svolta la connessione wifi non ha risolto per me. Questa è in realtà una di quelle fastidiose soluzioni alternative! – 7kemZmani

risposta

1

Se il master è in esecuzione su una porta non predefinita. Puoi pubblicare il tuo comando di invio? https://spark.apache.org/docs/latest/spark-standalone.html#connecting-an-application-to-the-cluster

+0

Non sto utilizzando un invio, voglio raggiungerlo con IDE. Invia funziona correttamente e Master è impostato come spark: // spark-master: 7077 –

+0

Il modo in cui faccio da IDE è creare un oggetto conf e impostare il master tramite il metodo setMaster. Quindi creo il contesto spark usando l'oggetto conf. Credo che il contesto scintilla sia il collegamento tra l'applicazione e il cluster –

+0

Questo è esattamente il modo in cui lo faccio e esattamente come ho ottenuto l'errore menzionato. –

12

Ho avuto questo problema quando il mio file /etc/hosts stava mappando l'indirizzo IP sbagliato al mio nome host locale.

Il BindException nei registri si lamenta dell'indirizzo IP 192.168.0.191. Suppongo che risolva il nome host del tuo computer ed è non l'indirizzo IP effettivo che sta utilizzando l'interfaccia di rete. Dovrebbe funzionare bene una volta sistemato.

+0

Grazie per il puntatore. Ora funziona per me. – optimist

55

Impostazione della variabile di ambiente SPARK_LOCAL_IP = 127.0.0.1 risolto per me.

+0

Questo risolve il problema anche per me. Ma è stato a causa di ipv6 sul portatile –

5

Avevo una scintilla che funzionava nella mia istanza EC2. Ho iniziato un nuovo server Web e per soddisfare il suo fabbisogno ho dovuto cambiare nome host per EC2 nome DNS pubblico cioè

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

Dopo che la mia scintilla non poteva funzionare e ha mostrato errore come di seguito:

16/09/20 21:02:22 UTENTI WARN: il servizio 'sparkDriver' non può collegarsi sulla porta 0. Tentativo di porta 1. 16/09/20 21:02:22 ERRORE SparkContext: errore durante l'inizializzazione di SparkContext.

ho risolto impostando SPARK_LOCAL_IP come di seguito:

export SPARK_LOCAL_IP="localhost" 

poi appena lanciato guscio frizzante come di seguito:

$SPARK_HOME/bin/spark-shell 
+0

È passato molto tempo da quando ho postato questa domanda, suppongo che alcune cose siano cambiate nel frattempo per fare soluzioni semplici. –

Problemi correlati