2015-09-01 15 views
5

Ogni volta che provo a eseguire un'applicazione Spark su un cluster Cloudera CDH 5.4.4, modalità client filato, ottengo la seguente eccezione (ripetuta molte volte nella traccia dello stack). Il processo continua comunque (è un avvertimento), ma non è possibile trovare qualcosa nei log. Come posso risolverlo?Eccezione in esecuzione /etc/hadoop/conf.cloudera.yarn/topology.py

15/09/01 08:53:58 WARN net.ScriptBasedMapping: Exception running /etc/hadoop/conf.cloudera.yarn/topology.py 10.0.0.5 
java.io.IOException: Cannot run program "/etc/hadoop/conf.cloudera.yarn/topology.py" (in directory "/home/azureuser/scripts/streaming"): error=13, Permission denied 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) 
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:485) 
    at org.apache.hadoop.util.Shell.run(Shell.java:455) 
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715) 
    at org.apache.hadoop.net.ScriptBasedMapping$RawScriptBasedMapping.runResolveCommand(ScriptBasedMapping.java:251) 
    at org.apache.hadoop.net.ScriptBasedMapping$RawScriptBasedMapping.resolve(ScriptBasedMapping.java:188) 
    at org.apache.hadoop.net.CachedDNSToSwitchMapping.resolve(CachedDNSToSwitchMapping.java:119) 
    at org.apache.hadoop.yarn.util.RackResolver.coreResolve(RackResolver.java:101) 
    at org.apache.hadoop.yarn.util.RackResolver.resolve(RackResolver.java:81) 
    at org.apache.spark.scheduler.cluster.YarnScheduler.getRackForHost(YarnScheduler.scala:38) 
    at org.apache.spark.scheduler.TaskSchedulerImpl$$anonfun$resourceOffers$1.apply(TaskSchedulerImpl.scala:271) 
    at org.apache.spark.scheduler.TaskSchedulerImpl$$anonfun$resourceOffers$1.apply(TaskSchedulerImpl.scala:263) 
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 
    at org.apache.spark.scheduler.TaskSchedulerImpl.resourceOffers(TaskSchedulerImpl.scala:263) 
    at org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend$DriverActor.makeOffers(CoarseGrainedSchedulerBackend.scala:167) 
    at org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend$DriverActor$$anonfun$receiveWithLogging$1.applyOrElse(CoarseGrainedSchedulerBackend.scala:131) 
    at scala.runtime.AbstractPartialFunction$mcVL$sp.apply$mcVL$sp(AbstractPartialFunction.scala:33) 
    at scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:33) 
    at scala.runtime.AbstractPartialFunction$mcVL$sp.apply(AbstractPartialFunction.scala:25) 
    at org.apache.spark.util.ActorLogReceive$$anon$1.apply(ActorLogReceive.scala:53) 
    at org.apache.spark.util.ActorLogReceive$$anon$1.apply(ActorLogReceive.scala:42) 
    at scala.PartialFunction$class.applyOrElse(PartialFunction.scala:118) 
    at org.apache.spark.util.ActorLogReceive$$anon$1.applyOrElse(ActorLogReceive.scala:42) 
    at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498) 
    at akka.actor.ActorCell.invoke(ActorCell.scala:456) 
    at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:219) 
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386) 
    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) 
Caused by: java.io.IOException: error=13, Permission denied 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:186) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) 
    ... 32 more 

risposta

0

trovato una soluzione qui: https://groups.google.com/a/cloudera.org/forum/#!searchin/cdh-user/Exception $ 20running $ 20 $ 2Fetc $ 2Fhadoop $ 2Fconf.cloudera.yarn $ 2Ftopology.py/CDH-utente/fte4IPjX8TU/0jUOGkXyCAAJ

Basta aggiungere le autorizzazioni per l'utente che lancia lo script su tutte le directory che formano il percorso dello script (per leggere e elencare i file).

+1

vorrei che il messaggio è stato più informativo e non dirigere ad un collegamento chiuso. – Dror

+0

Ho scaricato i file di configurazione del client da Cloudera Manager e i nomi delle cartelle sono diversi filato-conf vs conf.cloudera.yarn. Inoltre, non eseguire autorizzazioni su topology.py. Ho controllato i nodi del cluster e hanno i nomi e le autorizzazioni previsti. –

3

Di fronte allo stesso problema durante l'invio di un lavoro Spark.

Molto probabilmente non si dispone del file "/etc/hadoop/conf.cloudera.yarn/topology.py" sul server su cui è stata eseguita l'applicazione Spark. Oppure "/etc/hadoop/conf.cloudera.yarn/topology.py" non è disponibile su uno o più server.

È inoltre possibile risolvere questo problema eseguendo l'applicazione in modalità cluster.

--master yarn-cluster 
+0

l'esecuzione dell'applicazione in modalità cluster di filato non ha modificato l'errore, quindi non risolvendo il problema – dieHellste

0

chmod 755 /etc/hadoop/conf.cloudera.yarn/topology.py

Problemi correlati