spark-jobserver:工作人员未连接回驱动程序
spark-jobserver: Worker does not connect back to the driver
我在两台机器上搭建了一个小型的Spark环境。一个 运行 是主人和工人,另一个 运行 只是工人。我可以使用 Spark Shell 来使用这个集群,例如:
spark-shell --master spark://mymaster.example.internal:7077
我可以在其中 运行 正确分配到节点的计算,所以一切 运行 都很好。
但是,我在使用 spark-jobserver 时遇到了问题。
首先尝试启动 Docker 容器(环境变量 SPARK_MASTER
指向正确的主 URL)。当作业开始时,它被推送到的工作人员抱怨它无法连接回 172.18.x.y:nnnn
。这很清楚,因为这是作业服务器 运行 所在的 Docker 容器的内部 IP 地址。
所以,我 运行 jobserver 容器再次 --network host
所以它附加到主机网络。然而,开始工作导致连接再次被拒绝,这次说它无法连接到 172.30.10.10:nnnn
。 172.30.10.10
是我想要 运行 作业服务器的主机的 IP 地址,它可以从工作节点和主节点访问(Docker 容器中的 Spark 实例 运行 , 但它们也连接到主机网络)。
深入挖掘,我尝试启动一个 Docker 容器,里面只有一个 JVM 和 Spark,运行 它也有 --network host
并从里面启动一个 Spark 作业。这有效。
我可能遗漏了什么?
原来我错过了启动随机播放服务。我将我的自定义作业服务器容器配置为使用动态分配,这需要启动外部随机播放服务。
我在两台机器上搭建了一个小型的Spark环境。一个 运行 是主人和工人,另一个 运行 只是工人。我可以使用 Spark Shell 来使用这个集群,例如:
spark-shell --master spark://mymaster.example.internal:7077
我可以在其中 运行 正确分配到节点的计算,所以一切 运行 都很好。
但是,我在使用 spark-jobserver 时遇到了问题。
首先尝试启动 Docker 容器(环境变量 SPARK_MASTER
指向正确的主 URL)。当作业开始时,它被推送到的工作人员抱怨它无法连接回 172.18.x.y:nnnn
。这很清楚,因为这是作业服务器 运行 所在的 Docker 容器的内部 IP 地址。
所以,我 运行 jobserver 容器再次 --network host
所以它附加到主机网络。然而,开始工作导致连接再次被拒绝,这次说它无法连接到 172.30.10.10:nnnn
。 172.30.10.10
是我想要 运行 作业服务器的主机的 IP 地址,它可以从工作节点和主节点访问(Docker 容器中的 Spark 实例 运行 , 但它们也连接到主机网络)。
深入挖掘,我尝试启动一个 Docker 容器,里面只有一个 JVM 和 Spark,运行 它也有 --network host
并从里面启动一个 Spark 作业。这有效。
我可能遗漏了什么?
原来我错过了启动随机播放服务。我将我的自定义作业服务器容器配置为使用动态分配,这需要启动外部随机播放服务。