【发布时间】:2017-10-17 09:57:54
【问题描述】:
我安装的系统如下:
--mesos master 私网 IP 10.x.x.2 , Public 35.x.x.6
--mesos slave私有IP 192.x.x.10,Public 111.x.x.2
现在master成功地把任务分配给slave了,但是任务失败了。错误信息如下:
线程“main”中的异常 17/10/11 22:38:01 ERROR RpcOutboxMessage: 连接成功前询问超时
原因:org.apache.spark.rpc.RpcTimeoutException:无法接收 120 秒内回复。此超时由 spark.rpc.askTimeout
当我查看环境时,spark.driver.host 指向主服务器的私有 IP 地址 10.x.x.2 而不是公共 IP 地址 35.x.x.6。我查看了 Wireshark 捕获,确实,主私有 IP 地址的 TCP 包失败。
现在,如果我将主服务器的 spark.driver.bindAddress 设置为其本地 IP 地址,将主服务器的 spark.driver.host 设置为其公共 IP 地址,我会收到以下消息。
错误TaskSchedulerImpl:丢失执行程序1 myhostname.singnet.com.sg:无法创建执行程序,因为 无法分配请求的地址:
据我了解,spark.driver.bindAddress 为 master 和 slave 设置了它,因此 slave 得到上述错误。 现在我真的很想知道如何正确设置 spark 以通过公共 IP 处理这个集群?
【问题讨论】:
标签: apache-spark networking mesos