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

K8s Spark Operator提交SparkSubmit任务卡住无错误详情如何排查

K8s Spark Operator环境SparkSubmit进程卡住无报错排查方案

Spark on K8s cluster模式下,SparkSubmit进程启动后会先完成本地配置加载、依赖校验、K8s API Server交互、Driver Pod创建请求发送,全程无输出卡住基本是上述某一步发生无超时的阻塞,按以下顺序排查即可定位根因:

1. 强制打印DEBUG日志与线程栈定位阻塞点

默认INFO级别日志会吞掉网络、权限、加密初始化类的阻塞信息,先拿最直接的栈信息:

  • 在原提交命令的java指令后、-cp参数前添加JVM调试参数,重跑作业:
/opt/tools/Linux/jdk/openjdk1.8.0.332_8.62.0.20_x64/bin/java -Dlog4j.configuration=file:/opt/spark/conf/log4j.properties -Djavax.net.debug=all -Djava.security.egd=file:/dev/./urandom -cp /opt/spark/conf/:/opt/spark/jars/* org.apache.spark.deploy.SparkSubmit --verbose <原有提交参数全量保留>
  • 提前修改Spark配置目录下的log4j.properties,将org.apache.spark.deploy、io.fabric8.kubernetes.client包的日志级别调整为DEBUG
  • 如果进程依旧卡住无输出,直接执行jstack <SparkSubmit进程PID>导出线程栈,看阻塞调用栈落在哪个模块,不需要盲查。

2. 排查K8s API Server连通性与权限问题

该类问题占无日志卡住场景的90%以上,SparkSubmit启动后首个外部交互就是和--master指定的K8s API地址建连:

  • 在运行SparkSubmit的环境(即Spark Operator所在Pod/宿主机)直接执行连通性校验:
curl -v https://x.y.z.a:443/version -k
  • 若curl无响应卡住:检查节点到API Server的网络策略、防火墙规则、API Server负载、四层代理是否存在丢包
  • 若curl返回401/403:检查Spark Operator自身使用的ServiceAccount、作业配置的spark-driver-abc ServiceAccount是否绑定了正确的RBAC权限,需具备目标命名空间下Pod、ConfigMap、Event、Service的创建读写权限
  • 校验K8s认证配置是否有效:检查是否挂载了过期的kubeconfig、错误的CA证书,fabric8 K8s客户端遇到认证配置异常时默认会无限重试,不会打印错误日志。

3. 排查本地资源加载类阻塞

和K8s交互前SparkSubmit会先完成本地资源校验,这一步卡住也不会有明显报错:

  • 校验本地依赖路径有效性:命令中指定的local:///sample-apps/sample-basic-spark-operator/sample-basic-spark-operator.jar、local:///sample-apps/sample-basic-spark-operator/extra-jars/*路径需真实存在,如果路径依赖NFS/分布式存储挂载,直接执行ls对应路径看是否能正常返回,存储挂载卡死会导致文件读取永久阻塞
  • 校验JVM熵源是否充足:当前作业开启了网络加密、IO加密、认证三个安全相关配置,OpenJDK8默认使用/dev/random作为熵源,熵不足时加密初始化逻辑会永久阻塞,第一步加的-Djava.security.egd=file:/dev/./urandom参数就是用来绕过这个问题。

4. 排查版本兼容性问题

当前作业使用的Spark版本为3.0.1,需确认部署的Spark Operator版本是否兼容该Spark版本:部分高版本Spark Operator提交时会自动注入3.0版本不支持的配置参数,导致SparkSubmit初始化配置时静默阻塞,不会抛出异常。

5. 临时调整提交参数暴露错误

将原有提交参数中的spark.kubernetes.submission.waitAppCompletion=false暂时改为true,强制SparkSubmit同步等待提交流程完成,避免异步提交逻辑吞掉过程错误。

注意:当前配置的Driver CPU申请0.1核、硬限制0.2核,内存512M,资源配置极低,即使提交成功Driver也大概率OOM,但该问题只会影响作业运行阶段,不会导致提交阶段卡住。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:24:30