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

Spark Standalone集群Python任务执行失败求助

Spark Standalone集群Executor无法连接Master:UnknownHostException解决方案

问题场景

搭建了1台Master节点+4台Worker节点的Spark Standalone集群,提交任务后Master能将应用分发至Worker,但执行时抛出核心异常:java.net.UnknownHostException: 4103b8ddce96,单机运行相同任务无问题。

核心原因

Worker节点无法解析Master节点的主机名4103b8ddce96(该名称大概率是容器随机生成的ID),导致Executor无法与Master建立RPC连接。


解决方案

1. 配置集群节点主机名解析

  • 在所有Worker节点的/etc/hosts文件中添加Master节点的IP与主机名映射:
    echo "{master-node-ip} 4103b8ddce96" >> /etc/hosts
    
  • 若为容器化部署(如Docker),可通过自定义网络实现容器间主机名自动解析,或启动容器时添加映射:
    docker run --add-host=4103b8ddce96:{master-node-ip} ...
    

2. 强制Spark Master绑定固定IP/主机名

  • 修改Master节点$SPARK_HOME/conf/spark-env.sh文件,添加以下配置:
    export SPARK_MASTER_HOST={固定主机名或IP地址}
    export SPARK_MASTER_PORT=7078
    
  • 重启Spark Master服务:
    $SPARK_HOME/sbin/stop-master.sh
    $SPARK_HOME/sbin/start-master.sh
    
    重启后Worker将连接到固定地址,避免依赖随机生成的主机名。

3. 提交任务时使用可解析的Master地址

确保spark-submit命令的--master参数使用所有节点都能解析的固定地址:

spark-submit --master spark://{固定主机名或IP}:7078 --files ./config.json  --jars ./jars/mssql-jdbc-12.2.0.jre8.jar,./jars/vertica-jdbc-12.0.4-0.jar --py-files ./Packages.zip job_build.py

4. 验证网络连通性

  • 在每个Worker节点执行ping 4103b8ddce96,确认能解析到Master的IP并正常连通
  • 测试RPC端口连通性:telnet {master-node-ip} 36101,确保端口未被防火墙拦截

单机运行正常的原因

单机环境下,Spark Master与Executor进程均在同一节点,通信使用本地回环地址或localhost,无需跨节点解析主机名,因此不会触发该异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:23:13