如何从hos连接到Swarm模式下的Spark master

2024-04-26 11:48:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Spark集群上运行python应用程序,但我的应用程序不一定在主容器中。以下是我的compose yaml文件:

version: '3'
services:
  spark-master:
    image: bde2020/spark-master
    deploy:
      placement:
        constraints:
          [node.hostname == master]
    environment:
      - INIT_DAEMON_STEP=setup_spark
    ports:
      - '6080:8080'
      - '6077:7077'
      - '6040:4040'
  spark-worker-1:
    image: bde2020/spark-worker
    depends_on:
      - 'spark-master'
    environment:
      - 'SPARK_MASTER=spark://spark-master:7077'
    ports:
      - '6081:8081'
      - '6041:4040'

当我在Swarm集群上创建一个堆栈并运行这两个容器,并使用以下SparkSession配置运行python应用程序时,我收到connection refused错误。在

^{2}$

另一方面,当我用docker-compose up以正常模式运行这些容器时,具有相同SparkSession配置的同一个python应用程序工作起来很有魅力。显然,这是不可取的,因为我想有扩大和缩小的可能性。因此,我正在寻找一种在Swarm模式下运行我的应用程序的方法。在

关于我的问题,奇怪的是我非常确定端口映射是正确的,因为在设置堆栈之后,我能够通过6080端口连接到Spark UI,这是我映射到Spark:8080的端口。在

另一点是,我已经通过相同的方法成功地连接到其他容器,如Cassandra和Kafka(将这些容器的服务端口映射到主机端口,并连接到主机上的设置端口),但是对于Spark container,同一条路径不起作用。在


Tags: 端口composeimagemaster应用程序environment堆栈集群