2015-11-05 33 views
2

我试图安装一个独立的Spark集群。我准备了3个安装了Ubuntu的虚拟机。apache spark start-slave throws akka.actor.ActorNotFound异常

这三台机器由一个主站和两个从站组成。

我遵循Apache spark文档中的步骤。我从主节点启动了主脚本,它工作正常。

问题发生在奴隶身上。

我试图从每台机器使用sbin/start-slave.sh启动从机,而另一次使用主机节点的sbin/start-slaves.sh

奴隶节点上的工人无法启动,并抛出以下异常

15/11/06 02:12:36 WARN Worker: Failed to connect to master rethink-node01:7077 
akka.actor.ActorNotFound: Actor not found for: ActorSelection[Anchor(akka.tcp://[email protected]:7077/), Path(/user/Master)] 
     at akka.actor.ActorSelection$$anonfun$resolveOne$1.apply(ActorSelection.scala:65) 
     at akka.actor.ActorSelection$$anonfun$resolveOne$1.apply(ActorSelection.scala:63) 
     at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) 
     at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55) 
     at akka.dispatch.BatchingExecutor$Batch.run(BatchingExecutor.scala:73) 
     at akka.dispatch.ExecutionContexts$sameThreadExecutionContext$.unbatchedExecute(Future.scala:74) 
     at akka.dispatch.BatchingExecutor$class.execute(BatchingExecutor.scala:120) 
     at akka.dispatch.ExecutionContexts$sameThreadExecutionContext$.execute(Future.scala:73) 
     at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) 
     at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) 
     at akka.pattern.PromiseActorRef.$bang(AskSupport.scala:266) 
     at akka.actor.EmptyLocalActorRef.specialHandle(ActorRef.scala:533) 
     at akka.actor.DeadLetterActorRef.specialHandle(ActorRef.scala:569) 
     at akka.actor.DeadLetterActorRef.$bang(ActorRef.scala:559) 
     at akka.remote.RemoteActorRefProvider$RemoteDeadLetterActorRef.$bang(RemoteActorRefProvider.scala:87) 
     at akka.remote.EndpointWriter.postStop(Endpoint.scala:557) 
     at akka.actor.Actor$class.aroundPostStop(Actor.scala:477) 
     at akka.remote.EndpointActor.aroundPostStop(Endpoint.scala:411) 
     at akka.actor.dungeon.FaultHandling$class.akka$actor$dungeon$FaultHandling$$finishTerminate(FaultHandling.scala:210) 
     at akka.actor.dungeon.FaultHandling$class.terminate(FaultHandling.scala:172) 
     at akka.actor.ActorCell.terminate(ActorCell.scala:369) 
     at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:462) 
     at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478) 
     at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:263) 
     at akka.dispatch.Mailbox.run(Mailbox.scala:219) 
     at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) 
     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) 
+0

好奇,如果答案的工作?你没有接受它,所以我不承认?这是如何解决的?我认为有几个主机名/ Spark相关的错误会影响到这一点,例如https://issues.apache.org/jira/browse/SPARK-11570 – JimLohse

+0

和顺便说一句,看到主日志中发生的事情对这些在工作人员似乎在黑暗中摸索的时候,主人可以发现连接失败,因为主人可以听到工人的声音,但不能与他们沟通。只是一个想法。 – JimLohse

回答

4

我面对这一点的同时建立一个独立的火花集群。对我来说这是由于纯粹的网络设置问题引起的。

从从机尝试做

的telnet MASTER_IP 7077

如果没有,那么你需要或者检查防火墙设置,或在我的情况下检查建立了连接,其中火花端口7077正在收听。虽然它不起作用,但这是我的netstat的输出。

netstat -an | grep的7077

TCP 0 0 127.0.0.2:7077 ::: * LISTEN

我打消了我从/ etc/hosts中127.0.0.2问题的条目,然后一切都开始正常工作。

netstat -an | grep的7077

TCP 0 0 1.1.1.1:7077 ::: * LISTEN

+0

+1,看起来Spark并不总是适合这些环回地址的使用,特别是127.0.0.1以外的版本,请尝试在127.0.1.1上搜索,并且会有很多debian文档的链接出现。 http://serverfault.com/questions/363095/why-does-my-hostname-appear-with-the-address-127-0-1-1-rather-than-127-0-0-1-in I必须在我所有的Spark配置中使用明确的IP地址,否则我会得到一个错误 – JimLohse

相关问题