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

AWS搭建Hadoop集群运行WordCount异常求助:资源与节点显示问题

解决AWS上Hadoop集群WordCount任务停滞&NodeManager无法注册的问题

看起来你遇到的是NodeManager无法成功注册到ResourceManager的典型问题——这也是导致任务一直卡在"running job"、8088控制台显示0节点、资源为<memory:0, vCores:0>的核心原因。结合你已经尝试修改yarn-site.xml但未解决的情况,我给你梳理几个关键排查步骤,按顺序来应该能定位问题:

1. 先排查网络连通性(AWS环境最容易踩的坑)

NodeManager需要和ResourceManager建立RPC连接才能注册,AWS的安全组配置经常会漏掉相关端口:

  • 在任意NodeManager节点上,测试能否访问ResourceManager的关键端口:
    # 测试ResourceManager的RPC地址端口(默认8030)
    nc -zv <你的RM主机名/IP> 8030
    # 测试资源跟踪端口(默认8031)
    nc -zv <你的RM主机名/IP> 8031
    # 测试调度器端口(默认8032)
    nc -zv <你的RM主机名/IP> 8032
    
  • 如果返回"Connection refused",立刻检查AWS安全组:确保所有NodeManager实例的安全组允许出站访问ResourceManager实例的8030/8031/8032端口;同时ResourceManager的安全组允许入站接收这些端口的流量。
  • 另外,检查所有节点的主机名解析:在NodeManager节点上ping ResourceManager的主机名(比如namenode),看能否返回正确的IP。如果解析失败,要么修改/etc/hosts文件添加对应映射,要么在yarn-site.xml里直接用IP地址代替主机名。

2. 重新核对yarn-site.xml的核心配置

你已经修改过内存和核心数,但可能漏掉了注册相关的关键配置,或者配置冲突:

  • 确保以下三个配置指向正确的ResourceManager地址(不要拼写错误):
    <property>
      <name>yarn.resourcemanager.address</name>
      <value>namenode:8030</value>
    </property>
    <property>
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>namenode:8031</value>
    </property>
    <property>
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>namenode:8032</value>
    </property>
    
  • 检查资源配置的合理性:
    • yarn.nodemanager.resource.memory-mb不能超过EC2实例的实际可用内存(比如t2.medium实例有4G内存,建议设为3072,留1G给系统);
    • yarn.nodemanager.resource.cpu-vcores不要超过实例的vCore数;
    • 关键:yarn.scheduler.minimum-allocation-mb必须小于等于yarn.nodemanager.resource.memory-mb,否则NodeManager会因为资源不符合要求而无法注册。
  • 修改完配置后,一定要同步到所有节点,再重启服务。

3. 分析NodeManager的具体错误日志

你提到有NodeManager的错误日志,这是定位问题的关键:

  • 如果日志里有Connection refused:回到第一步,解决网络/端口问题;
  • 如果日志里有Insufficient resource:检查第二步的资源配置冲突,调整scheduler.minimum-allocation-mb或nodemanager.resource.memory-mb;
  • 如果日志里有Hostname cannot be resolved:修复主机名解析问题;
  • 如果日志里有Permission denied:检查Hadoop的权限配置,确保NodeManager进程有足够的权限访问YARN的工作目录(比如/tmp/hadoop-yarn)。

4. 按正确顺序重启YARN服务

重启服务的顺序很重要,错误的顺序可能导致NodeManager无法注册:

  1. 先在ResourceManager节点停止RM:
    yarn-daemon.sh stop resourcemanager
    
  2. 在所有NodeManager节点停止NM:
    yarn-daemon.sh stop nodemanager
    
  3. 先启动ResourceManager:
    yarn-daemon.sh start resourcemanager
    
  4. 再启动所有NodeManager:
    yarn-daemon.sh start nodemanager
    
  5. 等待1-2分钟后,刷新namenode:8088/cluster/nodes页面,看节点是否已经注册。

5. 检查ResourceManager的状态和日志

如果以上步骤都没解决,查看ResourceManager的日志(默认路径$HADOOP_HOME/logs/yarn-*-resourcemanager-*.log):

  • 看有没有拒绝NodeManager注册的日志信息,比如配置不匹配、权限问题;
  • 运行命令确认RM状态是否正常:
    yarn rmadmin -getServiceState rm
    
    返回ACTIVE才是正常状态,如果是STANDBY,说明可能配置了HA但没正确启动。

按照这个流程排查,大部分AWS上的YARN节点注册问题都能解决。如果还是不行,可以把NodeManager的具体错误日志贴出来,我再帮你分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:36:15