【问题标题】:Multihomed Spark Cluster多宿主 Spark 集群
【发布时间】:2019-02-21 16:16:15
【问题描述】:

我正在多宿主网络环境中设置 Spark 集群,但遇到了一些问题。我将从物理配置开始。

我在一个机架中有 12 个节点,它们有一个使用 ipoib 的机架间 100G infiniband 网络和一个 1G 管理网络。

当我从集群上的主节点运行作业时,Spark 运行良好,但现在我尝试从连接到管理网络的工作站执行作业,而管理网络正是我遇到问题的地方。

所有 spark 节点的主机文件都指向 infiniband 网络,因为我希望它们通过该网络进行通信。我必须将主节点的 SPARK_MASTER_HOST 设置为 0.0.0.0 才能从我的工作站连接到主节点。

现在我可以创建一个 SparkSession 并执行操作,但它总是挂起,当我查看工作人员的日志时,我看到他们收到“没有路由到主机”错误。似乎即使节点上的默认路由设置为管理子网,它也试图使用 infiniband 网络连接回客户端。 (我应该指出,我可以从所有客户端 ping 我的工作站,所以我知道网络路由很好。目前所有的防火墙都关闭了)

附带说明,由于这种设置,spark master web 界面不能很好地工作,因为所有指向工作程序的链接都指向 infiniband IP 地址,所以它总是失败,但如果你只是更改 IP在地址栏中手动添加到它工作的正确子网。解决这个问题也不错,但并不是什么大不了的事。

我尝试查看 spark 文档,但并没有真正找到任何有用的东西,我尝试使用一些网络设置,但运气不佳。我很难相信 spark 不支持拥有专用网络,但也许是这样。

感谢你们能给我的任何帮助或想法。

【问题讨论】:

    标签: apache-spark pyspark infiniband multihomed


    【解决方案1】:

    我曾经一直面临这些问题(在 InfiniBand 环境中也是如此)并且没有找到合适的解决方案,而只是找到了一些解决方法。 问题是 Spark 不允许客户端master 和 masterworkers 在不同的网络上连接。

    解决方法 #1:使用 YARN 集群模式 您的应用程序将在 YARN 集群中运行(我假设它与您的 Spark 集群相同),因此可以访问 InfiniBand 网络。在这种情况下,您必须确保作业可以通过管理网络提交给 YARN。然后 YARN 将启动绑定到 InfiniBand 网络的 Spark 进程。

    解决方法 #2:代理 另一种选择(我没有尝试过,但应该可以)是在 Spark Master 节点上设置一个代理守护程序,它将中继您的管理IB 网络。

    【讨论】:

    • 是的,我最初试图避免设置 YARN 集群,但听起来这可能是获得我想要的东西的最佳方式。感谢您的建议并确认 Spark 本身并不支持我想要的。
    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2015-08-16
    • 2014-11-26
    • 2016-06-28
    • 1970-01-01
    • 2011-01-09
    相关资源
    最近更新 更多