2016-05-12 67 views
4

我正在嘗試使用OpenStack配置Spark集羣。目前,我有兩個服務器命名Spark集羣主IP地址未綁定到浮動IP

  • 火花主(IP:192.xx1,浮動IP:87.xx1)
  • 火花從-1(IP:192.xx2,浮動IP: 87.xx2)

我在嘗試使用這些浮動IP與標準公有IP時遇到問題。

在火花主機,主機名是火花主/etc/hosts中看起來像

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,我可以查看Web UI。

事情是我查看使用浮動IP 87.x.x.1的Web UI,並在那裏列出了主URL:spark://192.x.x.1:7077。

從奴隸我可以運行./sbin/start-slave.sh spark://192.x.x.1:7077和它連接成功。

如果我試圖通過在主機改變spark-env.shexport SPARK_MASTER_IP='87.x.x.1'然後使用浮動IP我收到以下錯誤日誌

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) 

顯然,這裏對我來說是外賣行

您的主機名,spark-master解析爲一個環回地址:127.0.1.1; 使用192.xx1代替(上網卡eth0)16/05/12 15時05分33秒WARN utils的:設置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

由於出現在日誌中,

您的主機名,spark-master解析爲一個迴環a地址: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(優先考慮spark-env。SH),並開始你再次主

+0

因此,如果我設置了'SPARK_LOCAL_IP = 87.xx1 '我是否也在同一個* spark-env.sh *中設置了'SPARK_MASTER_IP = 87.xx1'? –

+0

是的,這正是我的意思 – user1314742

+0

你可以強制Spark使用IPV4嗎?在spark-env.sh添加followinig行:'export SPARK_DAEMON_JAVA_OPTS =「 - Djava.net.preferIPv4Stack = true」' – user1314742

3

我對OpenStack的自己定一個火花集羣(集羣獨立)和我的/ etc/hosts中的主文件,我有:

127.0.0.1本地主機

192.168.1.2 spark-master而不是127.0.0.1

現在,因爲我有一個虛擬專用網絡用於我的主站和從站,所以我只使用私有IP。當我啓動spark-submit --master spark:// spark-master(spark-master在這裏解析爲浮動IP)時,唯一一次我使用浮動IP在我的主機上。我不認爲你需要嘗試綁定浮動IP。我希望這有助於!

布魯諾

+0

你在conf文件中設置了「SPARK_LOCAL_IP」和「SPARK_MASTER_IP」? –

+0

我沒有設置SPARK_LOCAL_IP,但在我的conf文件中,spark.master中有:spark:// spark-master:7077(spark-master是192.168.1.2),希望它有幫助! –