我正致力于在多主机网络环境下建立一个星火库集群,并遇到了一些问题。我将从物理配置开始。
我有12个节点,都在一个机架上,使用ipoib和1G管理网络,有一个机架间100 G的infiniband网络。
当我从集群上的主节点运行作业时,Spark工作非常好,但是现在我尝试从连接到管理网络的工作站执行作业,而管理网络正是我遇到麻烦的地方。
所有的星火节点都有它们的主机文件指向infiniband网络,因为我希望它们通过该网络进行通信。为了能够从工作站连接到主节点,我必须将主节点的SPARK_MASTER_HOST设置为0.0.0.0。
现在,我可以创建一个SparkSession并执行操作,但是它总是挂起的,当我查看工作人员的日志时,我发现他们得到了一个"No that to host“错误。看起来,即使节点上的默认路由设置为管理子网,它仍然试图使用infiniband网络连接回客户端。(我要指出的是,我可以从所有的客户端切换我的工作站,这样我就知道网络路线是好的。而且现在所有的防火墙都关闭了)
另外,由于这种设置,火花主web接口不能很好地工作,因为到工作者的所有链接都指向infiniband IP地址,所以它总是失败,但是如果您只是手动将地址栏中的IP更改为正确的子网,它就能工作。这也是很好的解决办法,但这并不是什么大问题。
我试着翻阅星火文档,但是我没有发现任何看起来有帮助的东西,我试着玩一些网络设置,但是我运气不太好。我很难相信星星之火不支持拥有一个专用网络,但也许是这样的。
我很感激你们能给我的任何帮助或想法。
发布于 2018-09-17 23:24:19
我过去经常面对这些问题(在InfiniBand上下文中也是如此),没有找到合适的解决方案,只是找到了一些解决办法。问题是Spark不允许客户端<->主程序和主<->工作人员在不同的网络上连接。
解决方法1:使用纱线集群模式,您的应用程序将在纱线集群中运行(我假设它与您的Spark集群相同),从而访问InfiniBand网络。在这种情况下,您必须确保作业可以通过管理网络提交给纱线。纱线将启动火花处理,这将绑定到InfiniBand网络。
解决方法2:代理另一个选项(我没有尝试,但应该有效)是在Spark节点上设置一个代理守护进程,它将中继您的管理<->IB网络。
https://stackoverflow.com/questions/52372817
复制相似问题