我在 Docker 容器中运行 Airflow 2.3.4,并在本地计算机中运行 Spark 3.3.0 独立集群。我正在尝试使用 SparkSubmitOperator 将 Spark 作业提交到本地 Spark 集群,但作业无法连接到 Spark master,并出现错误“连接被拒绝”。
在 Airflow 连接 UI 中,我已将主机添加为 spark://host.docker.internal:7077 并带有额外选项
{"deploy-mode" : "client" }
,并在 docker-compose 文件中添加了以下内容以指向我的本地主机 IP:
extra_hosts:
- "host.docker.internal:host-gateway"
我已在 Airflow 容器中安装了 Spark 二进制文件、Java、Airflow 提供程序包和 PySpark 3.3.0,并在这些容器的 PATH 变量中设置了 SPARK_HOME 和 JAVA_HOME。
我尝试从 Docker 容器内部 ping Spark master,但即使我能够
ping host.docker.internal
,telnet host.docker.internal 7077
也给我“连接被拒绝”。
我知道这不是答案,但我无法发表评论,所以我别无选择。
问题解决了吗?我也有同样的错误,并且一个多星期都无法修复。