mesos spark slave尝试连接到主私有ip而不是公共ip

czfnxgou  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(355)

我安装了如下系统:
--mesos主机私有ip为10.x.x.2,公共ip为35.x.x.6
--mesos从机专用ip 192.x.x.10,公用111.x.x.2
现在主服务器成功地将任务分配给了从服务器,但是任务失败了。错误消息如下:
线程“main”中出现异常17/10/11 22:38:01错误rpcoutboxmessage:成功连接前询问超时
原因:org.apache.spark.rpc.rpctimeoutexception:无法在120秒内收到任何答复。此超时由spark.rpc.asktimeout控制
当我查看环境时,spark.driver.host指向主机10.x.x.2的私有ip地址,而不是公共ip地址35.x.x.6。我查看了wireshark捕获,实际上,主私有ip地址的tcp包失败了。
现在,如果我将spark.driver.bindaddress从主机设置为其本地ip地址,将spark.driver.host从主机设置为其公共ip地址,我将得到以下消息。
错误taskschedulerimpl:myhostname.singnet.com.sg上的executor 1丢失:无法创建executor,因为无法分配请求的地址:
据我所知,spark.driver.bindaddress同时为master和slave设置了它,因此slave得到了上述错误。现在我真的很想知道如何在公共ip上使用spark进行集群?

nzkunb0c

nzkunb0c1#

我建议您使用全私有设置或全公共设置。不在中间。
通常,您希望所有内容都是私有的,如果您需要向外部公开任何数据,只需公开公共ip上的数据端点即可。例如,运行所有spark作业并将数据存储在s3中。然后在bucket上启用s3公共访问。使用私有IP通常更安全。
关于 --advertise-ip mesos主机上的参数。那是为了让米索斯奴隶找到米索斯主人。这里的问题spark不支持公共和私人的组合,所以你必须做一个或另一个。您可以在连接到公共IP的mesos机器上运行spark工作负载,但这意味着您必须为这些机器配备一个可访问的zookeeper等。

相关问题