2015-04-02 4 views
0

Фон: У меня есть две машины с одинаковыми именами хостов, мне нужно настроить локальный искровой кластер для тестирования, настроить мастер, а работник отлично работает, но пытается запустить приложение с драйвером вызывает проблемы, netty, похоже, не выбирает правильный хост (независимо от того, что я там вложил, он просто выбирает первый хост).Передача имени хоста netty

Идентичные имя хоста:

$ dig +short corehost 
192.168.0.100 
192.168.0.101 

Спарк конфигурации (используемый мастером и местным работником):

export SPARK_LOCAL_DIRS=/some/dir 
export SPARK_LOCAL_IP=corehost  // i tried various like 192.168.0.x for 
export SPARK_MASTER_IP=corehost  // local, master and the driver 
export SPARK_MASTER_PORT=7077 
export SPARK_WORKER_CORES=2 
export SPARK_WORKER_MEMORY=2g 
export SPARK_WORKER_INSTANCES=2 
export SPARK_WORKER_DIR=/some/dir 

Искра запускается и я могу видеть работника в веб-интерфейса. Когда я запускаю свечу «работу» ниже:

val conf = new SparkConf().setAppName("AaA") 
          // tried 192.168.0.x and localhost 
          .setMaster("spark://corehost:7077") 
val sc = new SparkContext(conf) 

Я получаю это исключение:

15/04/02 12:34:04 INFO SparkContext: Running Spark version 1.3.0 
15/04/02 12:34:04 WARN Utils: Your hostname, corehost resolves to a loopback address: 127.0.0.1; using 192.168.0.100 instead (on interface en1) 
15/04/02 12:34:04 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address 
15/04/02 12:34:05 ERROR NettyTransport: failed to bind to corehost.home/192.168.0.101:0, shutting down Netty transport 
... 
Exception in thread "main" java.net.BindException: Failed to bind to: corehost.home/192.168.0.101: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) 
15/04/02 12:34:05 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon. 
15/04/02 12:34:05 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports. 
15/04/02 12:34:05 INFO RemoteActorRefProvider$RemotingTerminator: Remoting shut down. 

Process finished with exit code 1 

Не уверен, как поступить ... его в целом джунгли IP-адресов. Не уверен, что это тоже проблема.

+0

dig только запрашивает службу DNS; в то время как имя хоста использует путь разрешения внутреннего имени glibc, который также просматривает файлы, которые присутствуют в системе, такие как '/ etc/hosts'. Этот файл, вероятно, имеет сопоставление для «corehost», о котором жалуется netty. Вы можете проверить это сопоставление, используя 'getent host corehost'. – Petesh

+0

@Petesh Это не случай плохого сопоставления, в одной сети есть две физические машины с одним и тем же именем хоста. Проблема в том, что без дополнительных настроек, которые Любен упомянул в своем ответе, водитель не был уверен, какой из двух хостов должен выбрать. Спасибо за вашу идею! Полезный инструмент отладки. – user2003470

ответ

2

Мой опыт с идентичной проблемой заключается в том, что он вращается вокруг локализации локации. Попробуйте быть более многословным в вашем искрового код драйвера, добавьте SPARK_LOCAL_IP и драйвера хоста IP в конфигурации:

val conf = new SparkConf().setAppName("AaA") 
          .setMaster("spark://localhost:7077") 
          .set("spark.local.ip","192.168.1.100") 
          .set("spark.driver.host","192.168.1.100") 

Это должно сказать NETTY, какой из двух одинаковых хостов использовать.

Смежные вопросы