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

Spark Agent在Kubernetes EKS中无法连接外部Shuffle服务求助

解决Kubernetes中Spark Agent连接外部Shuffle服务失败的问题

问题根源

你的配置参数缺少spark.前缀,导致Spark无法识别动态分配和外部Shuffle服务的相关配置项,进而仍尝试连接Executor所在节点的本地Shuffle服务(即日志中的10.0.8.56这类节点IP),而非你部署的DaemonSet+Service提供的外部Shuffle服务。

修正步骤

  1. 补全配置参数的spark.前缀
    所有Spark配置参数必须以spark.开头,修改后的正确配置如下:

    spark.dynamicAllocation.enabled=true
    spark.shuffle.service.enabled=true 
    
    spark.kubernetes.shuffle.namespace = "default"
    spark.kubernetes.shuffle.service.labels = "app=spark-external-shuffle"
    spark.dynamicAllocation.initialExecutors=1
    spark.dynamicAllocation.minExecutors=1
    spark.dynamicAllocation.maxExecutors=5
    
  2. 验证配置匹配性

    • 确认外部Shuffle服务的DaemonSet Pod标签确实为app=spark-external-shuffle,可通过以下命令验证:
      kubectl get pods -l app=spark-external-shuffle
      
    • 检查Service的选择器是否与Pod标签一致:
      kubectl describe service spark-external-shuffle | grep Selector
      
      输出需包含app=spark-external-shuffle。
  3. 重启应用并验证
    重启Spark Agent后,查看Driver日志,确认日志中出现连接到Shuffle Service ClusterIP(172.20.185.71)的相关信息,而非节点IP。

额外排查点

如果问题仍存在:

  • 检查Driver容器是否能访问Shuffle Service的ClusterIP:7337,可在Driver容器内执行telnet 172.20.185.71 7337或nc -zv 172.20.185.71 7337测试连通性。
  • 确认Shuffle Service的DaemonSet Pod已在所有运行Executor的节点上正常启动,可通过以下命令查看Pod分布:
    kubectl get daemonset spark-external-shuffle
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:37:39