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

Spark 3.1.2中Kubernetes客户端关闭告警致Executor任务挂起的解决方法

问题解答

1. 修复该问题的Spark版本

SPARK-33349对应的修复在Spark 3.2.0版本中正式完成。该修复解决了Kubernetes客户端连接关闭后,ExecutorPodsWatchSnapshotSource组件未正确处理重连逻辑的问题,同时消除了由此引发的Executor任务无限循环、应用挂起的异常。后续Spark 3.x系列的维护版本(如3.2.x、3.3.x等)均继承了该修复逻辑。

2. 无需升级Spark的配置/workaround方案

如果暂时无法升级Spark版本,可尝试以下临时解决方法:

  • 调整Kubernetes客户端连接参数:
    提交Spark应用时添加以下配置,提升客户端连接的稳定性:

    --conf spark.kubernetes.client.connectionTimeout=30s \
    --conf spark.kubernetes.client.readTimeout=60s \
    --conf spark.kubernetes.client.maxReconnectAttempts=5
    

    延长超时时间、增加重连次数,可降低客户端连接意外关闭的概率,减少触发异常的场景。

  • 禁用Pod状态的Watch监听机制:
    关闭基于Watch的长连接监听,改用定期轮询方式获取Pod状态(会增加K8s API Server负载,但可规避Watch连接关闭引发的问题):

    --conf spark.kubernetes.executor.podWatchEnabled=false
    

    该配置生效后,Spark会定期调用K8s API查询Pod状态,而非维持长连接的Watch会话,避免客户端关闭后无法自动恢复的问题。

  • 限制任务重试次数:
    针对出现无限循环的Executor任务,设置任务失败重试上限,防止任务无限制占用资源导致应用挂起:

    --conf spark.task.maxFailures=3
    

    当任务失败次数达到设定值时,Spark会标记任务失败并进行后续处理,终止无限循环。

内容的提问来源于stack exchange,提问作者Артем Суслов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:55:57