You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark独立集群Executor无法连接Driver:连接被拒绝问题排查

Spark高可用集群连接拒绝问题分析与解决方案

1. 连接拒绝错误的可能原因

  • Master内部通信端口的绑定或访问问题:Spark Master会随机分配一个内部端口用于与Executor通信(如45407),若该端口仅绑定本地回环地址(127.0.0.1),或端口未在集群节点间开放,Executor将无法连接。
  • 高可用模式下的Master角色同步异常:若当前Active Master已切换至s2,但Executor仍尝试连接旧Standby节点s1的端口,而s1作为Standby已关闭该通信端口。
  • 配置中的地址指向错误:Worker或Executor获取的Master地址为固定的s1,而非ZK集群的高可用地址,导致无法感知Master角色切换。
  • Master进程内部通信线程异常:虽然Master进程显示运行正常,但负责处理Executor连接的线程已挂死,或端口被其他进程占用。

2. spark-env.sh配置的常见问题排查

先给出高可用模式下的核心配置示例,再指出可能的错误点:

# 正确的核心配置示例
export SPARK_MASTER_HOST=10.1.1.21  # 或绑定0.0.0.0,禁止设为localhost
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER \
    -Dspark.deploy.zookeeper.url=zk-node1:2181,zk-node2:2181,zk-node3:2181 \
    -Dspark.deploy.zookeeper.dir=/spark-ha"
export SPARK_LOCAL_IP=10.1.1.x  # 各节点绑定自身集群IP
export SPARK_WORKER_CORES=4
export SPARK_WORKER_MEMORY=8g

可能存在的问题:

  • SPARK_MASTER_HOST设为localhost:导致Master仅绑定本地回环地址,其他节点无法访问其随机分配的通信端口。
  • 缺失spark.deploy.recoveryMode=ZOOKEEPER配置:高可用模式未生效,Executor无法通过ZK获取Active Master的正确地址。
  • 未设置SPARK_LOCAL_IP:节点可能绑定错误的网卡地址,导致Master与Worker/Executor的通信路径异常。

3. 进一步排查与解决步骤

  • 验证Master端口绑定情况:在s1节点执行netstat -tulpn | grep org.apache.spark.deploy.master.Master,查看45407端口的绑定地址,确认是否为10.1.1.21而非127.0.0.1。若绑定localhost,修改SPARK_MASTER_HOST为集群可访问IP,重启Master。
  • 确认当前Active Master:访问s1和s2的Spark Master Web UI(默认8080端口),查看节点角色。若Active为s2,检查Executor的spark.master配置是否指向ZK集群地址,而非固定s1地址。
  • 固定Master通信端口:在spark-env.sh中添加以下配置,避免随机端口带来的不确定性:
    export SPARK_MASTER_PORT=7077
    export SPARK_MASTER_OPTS="-Dspark.master.rest.port=6066 -Dspark.master.internal.port=45407"
    
    重启Master后,在Worker节点执行nc -zv s1 45407测试端口连通性。
  • 检查Executor的Master配置:查看Executor日志中的spark.master参数,确认是否为spark://zk://zk-node1:2181,zk-node2:2181,zk-node3:2181,若为固定s1:7077,修改spark-defaults.conf中的spark.master为ZK地址。
  • 查看Master日志细节:在s1的Spark日志目录(默认$SPARK_HOME/logs)下,搜索45407或connection refused,排查是否有端口绑定失败、线程异常等信息。
  • 重启集群同步状态:若怀疑ZK与Spark节点状态不同步,依次重启ZK集群、所有Master节点、所有Worker节点,再重新提交任务测试。

内容的提问来源于stack exchange,提问作者sparknotworkinguwu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:43:10