2016-01-19 15 views
8

Come indicato nel titolo, mi chiedo se è necessario presentare una scintilla * .jar?È necessario inviare un barattolo di scintilla?

Sto usando Datastax Enterprise Cassandra per un po ', ma ora ho bisogno di usare anche Spark. Ho guardato quasi tutti i video da DS320: DataStax Enterprise Analytics with Apache Spark e non c'è nulla riguardo alla connessione alla scintilla in remoto dall'applicazione java.

Ora ho 3 nodi in esecuzione di DSE. Posso connetterti a Spark con la scintilla. Ma dopo 2 giorni di tentativi di connessione a Spark dal codice java mi sto arrendendo.

Questo è il mio codice Java

SparkConf sparkConf = new SparkConf(); 
sparkConf.setAppName("AppName"); 
//sparkConf.set("spark.shuffle.blockTransferService", "nio"); 
//sparkConf.set("spark.driver.host", "*.*.*.*"); 
//sparkConf.set("spark.driver.port", "7007"); 
sparkConf.setMaster("spark://*.*.*.*:7077"); 
JavaSparkContext sc = new JavaSparkContext(sparkConf); 

Risultato di collegamento

16/01/18 14:32:43 ERROR TransportResponseHandler: Still have 2 requests outstanding when connection from *.*.*.*/*.*.*.*:7077 is closed 
16/01/18 14:32:43 WARN AppClient$ClientEndpoint: Failed to connect to master *.*.*.*:7077 
java.io.IOException: Connection from *.*.*.*/*.*.*.*:7077 closed 
    at org.apache.spark.network.client.TransportResponseHandler.channelUnregistered(TransportResponseHandler.java:124) 
    at org.apache.spark.network.server.TransportChannelHandler.channelUnregistered(TransportChannelHandler.java:94) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelUnregistered(DefaultChannelPipeline.java:739) 
    at io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:659) 
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 
    at java.lang.Thread.run(Thread.java:745) 
16/01/18 14:33:03 ERROR TransportResponseHandler: Still have 2 requests outstanding when connection from *.*.*.*/*.*.*.*:7077 is closed 
16/01/18 14:33:03 WARN AppClient$ClientEndpoint: Failed to connect to master *.*.*.*:7077 
java.io.IOException: Connection from *.*.*.*/*.*.*.*:7077 closed 
    at org.apache.spark.network.client.TransportResponseHandler.channelUnregistered(TransportResponseHandler.java:124) 
    at org.apache.spark.network.server.TransportChannelHandler.channelUnregistered(TransportChannelHandler.java:94) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:158) 
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:144) 
    at io.netty.channel.DefaultChannelPipeline.fireChannelUnregistered(DefaultChannelPipeline.java:739) 
    at io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:659) 
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 
    at java.lang.Thread.run(Thread.java:745) 
16/01/18 14:33:23 ERROR SparkDeploySchedulerBackend: Application has been killed. Reason: All masters are unresponsive! Giving up. 
16/01/18 14:33:23 WARN SparkDeploySchedulerBackend: Application ID is not initialized yet. 
16/01/18 14:33:23 WARN AppClient$ClientEndpoint: Drop UnregisterApplication(null) because has not yet connected to master 
16/01/18 14:33:23 ERROR MapOutputTrackerMaster: Error communicating with MapOutputTracker 
java.lang.InterruptedException 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1326) 
    at scala.concurrent.impl.Promise$DefaultPromise.tryAwait(Promise.scala:208) 
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:218) 
    at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) 
    at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190) 
    at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) 
    at scala.concurrent.Await$.result(package.scala:190) 
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75) 
    at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:101) 
    at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:77) 
    at org.apache.spark.MapOutputTracker.askTracker(MapOutputTracker.scala:110) 
    at org.apache.spark.MapOutputTracker.sendTracker(MapOutputTracker.scala:120) 
    at org.apache.spark.MapOutputTrackerMaster.stop(MapOutputTracker.scala:462) 
    at org.apache.spark.SparkEnv.stop(SparkEnv.scala:93) 
    at org.apache.spark.SparkContext$$anonfun$stop$12.apply$mcV$sp(SparkContext.scala:1756) 
    at org.apache.spark.util.Utils$.tryLogNonFatalError(Utils.scala:1229) 
    at org.apache.spark.SparkContext.stop(SparkContext.scala:1755) 
    at org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend.dead(SparkDeploySchedulerBackend.scala:127) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint.markDead(AppClient.scala:264) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint$$anon$2$$anonfun$run$1.apply$mcV$sp(AppClient.scala:134) 
    at org.apache.spark.util.Utils$.tryOrExit(Utils.scala:1163) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint$$anon$2.run(AppClient.scala:129) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
16/01/18 14:33:23 ERROR Utils: Uncaught exception in thread appclient-registration-retry-thread 
org.apache.spark.SparkException: Error communicating with MapOutputTracker 
    at org.apache.spark.MapOutputTracker.askTracker(MapOutputTracker.scala:114) 
    at org.apache.spark.MapOutputTracker.sendTracker(MapOutputTracker.scala:120) 
    at org.apache.spark.MapOutputTrackerMaster.stop(MapOutputTracker.scala:462) 
    at org.apache.spark.SparkEnv.stop(SparkEnv.scala:93) 
    at org.apache.spark.SparkContext$$anonfun$stop$12.apply$mcV$sp(SparkContext.scala:1756) 
    at org.apache.spark.util.Utils$.tryLogNonFatalError(Utils.scala:1229) 
    at org.apache.spark.SparkContext.stop(SparkContext.scala:1755) 
    at org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend.dead(SparkDeploySchedulerBackend.scala:127) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint.markDead(AppClient.scala:264) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint$$anon$2$$anonfun$run$1.apply$mcV$sp(AppClient.scala:134) 
    at org.apache.spark.util.Utils$.tryOrExit(Utils.scala:1163) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint$$anon$2.run(AppClient.scala:129) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.InterruptedException 
    at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1326) 
    at scala.concurrent.impl.Promise$DefaultPromise.tryAwait(Promise.scala:208) 
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:218) 
    at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) 
    at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190) 
    at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) 
    at scala.concurrent.Await$.result(package.scala:190) 
    at org.apache.spark.rpc.RpcTimeout.awaitResult(RpcTimeout.scala:75) 
    at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:101) 
    at org.apache.spark.rpc.RpcEndpointRef.askWithRetry(RpcEndpointRef.scala:77) 
    at org.apache.spark.MapOutputTracker.askTracker(MapOutputTracker.scala:110) 
    ... 18 more 
16/01/18 14:33:23 ERROR SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[appclient-registration-retry-thread,5,main] 
org.apache.spark.SparkException: Exiting due to error from cluster scheduler: All masters are unresponsive! Giving up. 
    at org.apache.spark.scheduler.TaskSchedulerImpl.error(TaskSchedulerImpl.scala:438) 
    at org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend.dead(SparkDeploySchedulerBackend.scala:124) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint.markDead(AppClient.scala:264) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint$$anon$2$$anonfun$run$1.apply$mcV$sp(AppClient.scala:134) 
    at org.apache.spark.util.Utils$.tryOrExit(Utils.scala:1163) 
    at org.apache.spark.deploy.client.AppClient$ClientEndpoint$$anon$2.run(AppClient.scala:129) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

ho cercato di cambiare SPARK_MASTER_IP, SPARK_LOCAL_IP e molti altri variabili di configurazione, ma senza successo. Ora ho trovato alcuni articoli sull'invio di vasi a Spark e non sono sicuro (non riesco a trovare alcuna prova) se è la causa? La scintilla e la shell interattiva sono gli unici modi per utilizzare la scintilla?

Eventuali articoli a riguardo? Ti sarei grato se potessi darmi un consiglio.

+0

Non sono sicuro che questo risponda direttamente alla tua domanda, personalmente creo un grosso contenitore usando l'assembly sbt (la stessa cosa dovrebbe essere possibile con Maven), e lo mando al server remoto (usando scp per esempio) e Lo eseguo lì come qualsiasi file jar. – Rami

+1

Usa 'dse spark submit' per raccogliere le variabili ambientali per te – phact

risposta

1

Si consiglia vivamente di utilizzare dse spark-submit con dse. Sebbene non sia necessario, è sicuramente molto più semplice che garantire che le opzioni di sicurezza e di percorso di classe configurate per DSE funzionino con il tuo cluster. Fornisce anche un approccio molto più semplice (secondo me) per configurare SparkConf e posizionare i jar sui percorsi di classe executor.

All'interno di DSE inoltra automaticamente l'applicazione all'URL del master Spark corretto, semplificando ulteriormente la configurazione.

Se si desidera costruire manualmente SparkConf, accertarsi di associare il master spark all'uscita di dsetool spark-master o equivalente nella versione di DSE.

+0

Grazie per la risposta! Sto usando http://www.datastax.com/wp-content/uploads/resources/DataStax-WP-Best_Practices_Running_DSE_Within_Docker.pdf e non c'è niente su 'dse spark-submit'. Diciamo che non ho bisogno di codice personalizzato (quindi non è necessario inviare?) Nella scintilla all'inizio.Sai se c'è qualcosa di più da fare (più configurazione?) Per connettersi alla scintilla? –

+0

A seconda della sicurezza e delle opzioni di connessione utilizzate potrebbe essere molto. Ad esempio se usi kerberos hai bisogno di un autenticatore personalizzato dal jar di build di DSE in modo che sia necessario sul classpath e sui set di aggancio corretti. Anche questo può cambiare da versione a versione ... – RussS

+0

Ora non sto usando kerberos. Voglio solo farlo funzionare. Sembra come indirizzo IP che posso vedere in spark webUi. Non è l'IP pubblico del mio nodo (che uso per connettersi) ma l'indirizzo IP della rete mobile interna ... E nessuna delle impostazioni delle variabili può cambiare quella –

0

Avrete bisogno di un barattolo in modo che gli esecutori possano eseguire il vostro codice personalizzato. Puoi impostare questo vaso con SparkConf.setJars. Ma questo non è un requisito per la connessione al master Spark e la creazione di un'applicazione Spark. Chissà, forse non vuoi eseguire alcun codice personalizzato. (Questo può ragionevolmente essere il caso di Spark SQL.)

Non è inoltre necessario utilizzare spark-submit.


Io non so nulla di DataStax, quindi potrebbe essere qualsiasi cosa. Ma dal messaggio di errore sembra che la tua applicazione stia cercando di connettersi all'host sbagliato, oppure c'è un problema di rete. Se è possibile raggiungere lo stesso master Spark dalla stessa macchina con spark-shell, ovviamente non è così. Controlla i registri principali, forse può dirti perché sta chiudendo la connessione dalla tua applicazione.