Hadoop+Spark Windows集群worker节点无法连接ResourceManager问题求助
根治方案
1. 修正yarn-site.xml的配置格式错误
你当前manager节点的yarn-site.xml中yarn.resourcemanager.hostname属性的<final>标签嵌套格式错误,会导致该配置不生效,RM启动时默认绑定到0.0.0.0,进而下发给AM的注册地址异常。修正后的配置为:
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>FQHN_MANAGER</value> <final>true</final> </property> <property> <name>yarn.resourcemanager.address</name> <value>FQHN_MANAGER:8032</value> <final>true</final> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>FQHN_MANAGER:8030</value> <final>true</final> </property> <property> <name>yarn.acl.enable</name> <value>0</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- Windows适配配置,禁止多余反向解析 --> <property> <name>hadoop.security.authorization</name> <value>false</value> </property> <property> <name>hadoop.security.dns.log-slow-lookups.enabled</name> <value>false</value> </property> </configuration>
将修正后的配置同步到所有节点,完整重启YARN集群。
2. 显式指定Spark提交时的RM地址
提交Spark任务时添加以下参数,强制指定RM地址,避免Spark读取到错误的默认配置:
spark-submit --master yarn --deploy-mode cluster ^ --conf yarn.resourcemanager.hostname=FQHN_MANAGER ^ --conf yarn.resourcemanager.scheduler.address=FQHN_MANAGER:8030 ^ # 其余任务参数
3. 检查Windows系统的Hadoop配置路径优先级
确认worker节点的HADOOP_CONF_DIR环境变量指向的路径下的yarn-site.xml是你同步后的正确配置,Windows下如果存在多份Hadoop配置文件,会优先读取系统环境变量指向路径下的配置,你通过8042端口查到的是NodeManager加载的配置,和Spark、AM进程加载的配置可能来源不一致。
4. 验证RM绑定地址
在manager节点执行netstat -ano | findstr 8030,确认8030端口绑定的是FQHN_MANAGER对应的IP,不是0.0.0.0。如果还是绑定0.0.0.0,在manager节点的hadoop-env.cmd中添加配置:
set YARN_RESOURCEMANAGER_OPTS=-Dyarn.resourcemanager.hostname=FQHN_MANAGER
重启RM即可生效。
内容的提问来源于stack exchange,提问作者Stack38889
相关产品推荐
相关产品推荐

