2016-05-12 2 views
4

Я пытаюсь настроить кластер Spark с помощью OpenStack. В настоящее время я два сервера с именемИскры кластер Основной IP-адрес, не привязывающий к плавающей IP

  • искровых-мастера (IP: 192.xx1, плавающий IP: 87.xx1)
  • искровой ведомый-1 (IP: 192.xx2, плавающий IP: 87.xx2)

У меня возникают проблемы при попытке использовать эти плавающие IP-адреса и стандартные общедоступные IP-адреса.

На искровым главной машины, имя хоста искровым мастер и /и т.д./хосты выглядит как

127.0.0.1 localhost 
127.0.1.1 spark-master 

Единственное изменение, внесенное в spark-env.sh является export SPARK_MASTER_IP='192.x.x.1'. Если я запустил ./sbin/start-master.sh, я могу просматривать веб-интерфейс.

Дело в том, что я просматриваю веб-интерфейс с использованием плавающего IP 87.x.x.1, и там он перечисляет главный URL-адрес: spark: //192.x.x.1: 7077.

Оттуда я могу запустить ./sbin/start-slave.sh spark://192.x.x.1:7077, и он успешно соединяется.

Если я пытаюсь использовать плавающий IP путем изменения spark-env.sh на ведущем к export SPARK_MASTER_IP='87.x.x.1' затем я получаю следующее журнал ошибок,

Spark Command: /usr/lib/jvm/java-7-openjdk-amd64/bin/java -cp /usr/local/spark-1.6.1-bin-hadoop2.6/conf/:/usr/local/spark-1.6.1-bin-hadoop2.6/lib/spark-assembly-1.6.1-hadoop2.6.0.jar:/usr/local/spark-1.6.1-bin-hadoop2.6/lib/datanucleus-core-3.2.10.jar:/usr/local/spark-1.6.1-bin-hadoop2.6/lib/datanucleus-api-jdo-3.2.6.jar:/usr/local/spark-1.6.1-bin-hadoop2.6/lib/datanucleus-rdbms-3.2.9.jar -Xms1g -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.master.Master --ip 87.x.x.1 --port 7077 --webui-port 8080 
======================================== 
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 
16/05/12 15:05:33 INFO Master: Registered signal handlers for [TERM, HUP, INT] 
16/05/12 15:05:33 WARN Utils: Your hostname, spark-master resolves to a loopback address: 127.0.1.1; using 192.x.x.1 instead (on interface eth0) 
16/05/12 15:05:33 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address 
16/05/12 15:05:33 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
16/05/12 15:05:33 INFO SecurityManager: Changing view acls to: ubuntu 
16/05/12 15:05:33 INFO SecurityManager: Changing modify acls to: ubuntu 
16/05/12 15:05:33 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(ubuntu); users with modify permissions: Set(ubuntu) 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7078. Attempting port 7079. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7079. Attempting port 7080. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7080. Attempting port 7081. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7081. Attempting port 7082. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7082. Attempting port 7083. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7083. Attempting port 7084. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7084. Attempting port 7085. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7085. Attempting port 7086. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7086. Attempting port 7087. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7087. Attempting port 7088. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7088. Attempting port 7089. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7089. Attempting port 7090. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7090. Attempting port 7091. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7091. Attempting port 7092. 
16/05/12 15:05:33 WARN Utils: Service 'sparkMaster' could not bind on port 7092. Attempting port 7093. 
Exception in thread "main" java.net.BindException: Cannot assign requested address: Service 'sparkMaster' failed after 16 retries! 
    at sun.nio.ch.Net.bind0(Native Method) 
    at sun.nio.ch.Net.bind(Net.java:463) 
    at sun.nio.ch.Net.bind(Net.java:455) 
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) 
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) 
    at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:125) 
    at io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:485) 
    at io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1089) 
    at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:430) 
    at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:415) 
    at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:903) 
    at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:198) 
    at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:348) 
    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) 

Очевидно, что вынос здесь для меня линия

Ваше имя хоста, искровой мастер, решает адрес петли: 127.0.1.1; использованием 192.xx1 вместо (на интерфейсе eth0) 16/05/12 15:05:33 WARN Utils: Set SPARK_LOCAL_IP, если вам нужно привязать к другому адресу

, но независимо от того, какой подход я тогда попробовать и я просто столкнулся с большим количеством ошибок.

Если я устанавливаю как export SPARK_MASTER_IP='87.x.x.1' и export SPARK_LOCAL_IP='87.x.x.1' и попробовать ./sbin/start-master.sh я получаю следующее журнал ошибок

16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7078. Attempting port 7079. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7079. Attempting port 7080. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7080. Attempting port 7081. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7081. Attempting port 7082. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7082. Attempting port 7083. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7083. Attempting port 7084. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7084. Attempting port 7085. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7085. Attempting port 7086. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7086. Attempting port 7087. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7087. Attempting port 7088. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7088. Attempting port 7089. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7089. Attempting port 7090. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7090. Attempting port 7091. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7091. Attempting port 7092. 
16/05/17 11:00:55 WARN Utils: Service 'sparkMaster' could not bind on port 7092. Attempting port 7093. 
Exception in thread "main" java.net.BindException: Cannot assign requested address: Service 'sparkMaster' failed after 16 retries! 

Это, несмотря на то, моя группа безопасности кажется правильным

ALLOW IPv4 443/tcp from 0.0.0.0/0 
ALLOW IPv4 80/tcp from 0.0.0.0/0 
ALLOW IPv4 8081/tcp from 0.0.0.0/0 
ALLOW IPv4 8080/tcp from 0.0.0.0/0 
ALLOW IPv4 18080/tcp from 0.0.0.0/0 
ALLOW IPv4 7077/tcp from 0.0.0.0/0 
ALLOW IPv4 4040/tcp from 0.0.0.0/0 
ALLOW IPv4 to 0.0.0.0/0 
ALLOW IPv6 to ::/0 
ALLOW IPv4 22/tcp from 0.0.0.0/0 
+0

Вы могли решить вашу проблему? Я могу создать кластер с компьютеров, которые используют одну и ту же приватную сеть, но когда я пытаюсь делать подобные вещи (назначая публичный IP-узлам), он не работает. Ссылка на мой вопрос: https://stackoverflow.com/questions/48020657/how-to-bind-public-ip-to-spark-nodes-in-amazon-ec2 – user3086871

ответ

2

Как появляется в журналах,

Ваше имя хоста, искровой мастер, решает петлю a ddress: 127.0.1.1; используя 192.xx1 вместо (на интерфейсе eth0)

Искра автоматически пытается получить IP-адрес хоста, и он использует другой IP 192.x.x.1, а не плавающий IP 87.x.x.1

Чтобы решить эту проблему вам должен установить SPARK_LOCAL_IP=87.x.x.1 (предпочтительно в искровых условиях.ш) и начать свой мастер снова

+0

Итак, если я устанавливаю 'SPARK_LOCAL_IP = 87.xx1 'Я также устанавливаю' SPARK_MASTER_IP = 87.xx1' в тот же самый * spark-env.sh *? –

+0

Да, это именно то, что я имел в виду – user1314742

+0

Не могли бы вы заставить Spark использовать IPV4? в spark-env.sh добавьте следующую строку: 'export SPARK_DAEMON_JAVA_OPTS =" - Djava.net.preferIPv4Stack = true "' – user1314742

3

Я установил искровой кластер (автономный кластер) на OpenStack сам и в моей/и т.д./файл хостов на хозяина, у меня есть:

127.0.0.1 локальный

192.168.1.2 искровой мастер вместо 127.0.0.1

Теперь, поскольку у меня есть виртуальная частная сеть для моего хозяина и моих подчиненных, я работаю только с частными IP-адресами. Единственный раз, когда я использую плавающий IP-адрес, находится на моем хост-компьютере при запуске spark-submit -master spark: // spark-master (искровой мастер здесь решает плавающий IP-адрес). Я не думаю, что вам нужно попытаться связать плавающий IP. Надеюсь, это поможет!

Bruno

+0

Что вы устанавливаете 'SPARK_LOCAL_IP' и' SPARK_MASTER_IP' в файле conf? –

+0

Я не установил SPARK_LOCAL_IP, но в моем файле conf, в spark.master у меня есть: spark: // spark-master: 7077 (spark-master is 192.168.1.2), надеюсь, что это поможет! –