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

Hadoop集群运行Spark作业时出现Connection Refused错误求助

问题:Spark作业执行时出现Connection refused错误

Hadoop集群运行正常,执行start-all.sh后通过jps可看到NameNode、ResourceManager、DataNode等进程均正常运行,所有DataNode都能连接HDFS。但执行Spark示例作业时,出现以下错误:

Call From namenode/192.168.64.9 to "name of my PC":42319 failed on connection exception: java.net.ConnectException: Connection refused

集群配置信息

/etc/hosts配置

192.168.64.9 namenode.socal.rr.com
192.168.64.6 datanode1.socal.rr.com
192.168.64.7 datanode2.socal.rr.com
192.168.64.8 datanode3.socal.rr.com

DataNode节点jps输出

9474 Jps
5191 DataNode
5337 NodeManager
5914 HistoryServer

NameNode节点jps输出

10352 HistoryServer
9426 ResourceManager
9206 SecondaryNameNode
8969 NameNode
15388 Jps 

Hadoop workers/masters配置

  • workers文件内容:
192.168.64.6
192.168.64.7
192.168.64.8
  • masters文件内容:
192.168.64.9

Hadoop核心配置文件

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.64.9:9000</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/local/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/local/hadoop/hdfs/data</value>
    </property>
</configuration>

yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
       <name>yarn.resourcemanager.hostname</name>
       <value>192.168.64.9</value>
    </property>
    <property>
       <name>yarn.resourcemanager.address</name>
       <value>192.168.64.9:8032</value>
    </property>
    <property>
       <name>yarn.resourcemanager.webapp.address</name>
       <value>192.168.64.9:8088</value>
    </property>
    <property>
       <name>yarn.nodemanager.resource.memory-mb</name>
       <value>1536</value>
    </property>
    <property>
       <name>yarn.scheduler.maximum-allocation-mb</name>
       <value>1536</value>
    </property>
    <property>
       <name>yarn.scheduler.minimum-allocation-mb</name>
       <value>128</value>
    </property>
    <property>
       <name>yarn.nodemanager.vmem-check-enabled</name>
       <value>false</value>
    </property>
</configuration>

端口相关日志

netstat -tnlpa | grep 43783
tcp        0      0 0.0.0.0:43783           0.0.0.0:*               LISTEN      5162/java  

问题分析

错误中的"name of my PC":42319是本地PC的主机名和Spark Driver监听的随机端口。Spark作业提交后,YARN上的Executor需要反向连接Driver获取任务、返回结果,若集群节点无法解析你的PC主机名,或PC防火墙阻止了该端口的连接,就会触发Connection refused错误。

解决方法

  • 添加主机名映射:在集群所有节点(namenode、datanode1/2/3)的/etc/hosts文件中,添加PC的IP与主机名映射,格式如下:
    你的PCIP "name of my PC"
    
  • 关闭PC防火墙或开放端口:临时关闭本地PC的防火墙,或手动开放Spark Driver使用的端口(后续可指定固定端口避免重复操作)。
  • 提交作业时指定Driver地址:执行spark-submit时,通过--driver-host参数指定PC的IP,示例:
    spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode cluster --driver-host 你的PCIP examples/jars/spark-examples_2.12-3.3.0.jar 10
    
  • 配置Spark固定Driver端口:编辑Spark的spark-defaults.conf文件,添加以下配置指定Driver的固定IP和端口:
    spark.driver.host=你的PCIP
    spark.driver.port=4040  # 可自定义固定端口
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:07:11