【Hadoop 实战】Yarn 模式上传 HDFS 卡顿时 “No Route to Host“ 错误深度解析与解决方案

🌟 飞哥带你攻克 Hadoop 网络通信难题

大家好,我是小飞!最近在大数据集群运维中遇到一个典型问题:使用 Yarn 模式向 HDFS 上传大文件时进度条卡住不动 ,查看日志发现关键报错:
No Route to Host from BigData01/192.168.100.128 to BigData03:44620 failed on

这个看似简单的网络错误,背后隐藏着 Hadoop 集群通信的核心逻辑。本文将结合生产环境实战经验,带大家抽丝剥茧解决问题,文末附完整排查脚本!

🚀 一、问题场景复现

1. 环境背景

  • 集群规模:3 节点(BigData01 主节点,BigData02/03 数据节点)
  • 部署模式:Hadoop 3.3.6 + Yarn + HDFS 分布式存储
  • 操作场景:通过hadoop fs -put命令向 HDFS 上传 50GB 日志文件,任务长时间无进展

2. 关键日志分析

bash 复制代码
2025-05-18 14:23:45,678 ERROR org.apache.hadoop.ipc.Client: 
No route to host from BigData01/192.168.100.128 to BigData03:44620 failed on 
java.net.NoRouteToHostException: No route to host
	at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
	...(省略栈跟踪)

核心问题:主节点(BigData01)无法建立到数据节点(BigData03)的网络连接,端口 44620 通信失败。

🛠️ 二、深度排查:从网络层到 Hadoop 服务

🔍 第一步:网络层基础检查

1. 节点连通性测试
bash 复制代码
# 在BigData01上测试到BigData03的连通性
ping BigData03 -c 5  # 测试ICMP协议
telnet BigData03 44620  # 测试目标端口连通性
  • 现象 :ping 通但 telnet 端口失败 → 说明端口级通信受阻
2. 路由表与子网配置验证
bash 复制代码
# 查看主节点路由表
ip route show 
# 检查子网掩码(示例:应为24位掩码)
ifconfig eth0 | grep "inet addr"  # 确认IP与掩码匹配
  • 常见问题
    ✅ 若默认网关缺失 → sudo ip route add default via 192.168.100.1
    ✅ 若子网掩码错误(如误设为 16 位)→ 导致跨子网路由失败

🔍 第二步:Hadoop 服务端口分析

Hadoop 组件通信依赖固定端口,需确认端口是否正确配置且可达:

组件 端口 用途
DataNode 9867 数据传输端口(默认)
NodeManager 44620 Yarn 节点管理器通信端口
ResourceManager 8088 Yarn 资源管理 Web 界面
1. 端口配置校验
bash 复制代码
# 查看Hadoop配置文件(以Yarn为例)
cat $HADOOP_CONF_DIR/yarn-site.xml | grep -i "port"
# 预期配置:
<property>
  <name>yarn.nodemanager.address</name>
  <value>BigData03:44620</value>
</property>
2. 端口监听状态检查
bash 复制代码
# 在BigData03上检查端口是否启动
ss -tunlp | grep 44620 
# 若未监听 → 重启NodeManager服务
hadoop-daemon.sh restart nodemanager

🔍 第三步:防火墙与安全组拦截

1. 本地防火墙规则排查(Linux)
bash 复制代码
# 查看iptables规则
sudo iptables -L -n 
# 临时关闭防火墙验证
sudo systemctl stop firewalld 
# 云服务器需额外检查安全组规则(如AWS Security Group)
  • 典型场景
    🔒 若存在DROP规则阻止 44620 端口 → 添加允许规则:
    sudo iptables -A INPUT -p tcp --dport 44620 -j ACCEPT
2. Hadoop 安全模式影响
bash 复制代码
# 检查HDFS安全模式状态
hdfs dfsadmin -safemode get 
# 若处于安全模式 → 强制退出(谨慎操作)
hdfs dfsadmin -safemode leave 

🔍 第四步:集群服务状态校验

bash 复制代码
# 主节点检查Yarn ResourceManager状态
yarn rmadmin -getServiceState resourcemanager 
# 数据节点检查NodeManager状态
jps | grep NodeManager  # 应返回进程ID
# 查看HDFS节点健康状态
hdfs dfsadmin -report 
  • 关键指标
    ❗ 若 NodeManager 未启动 → 检查日志$HADOOP_LOG_DIR/nodemanager.log
    ❗ 若数据节点标记为decommissioned → 重新激活节点

📝 三、完整解决方案脚本(可直接复制)

bash 复制代码
#!/bin/bash
# 飞哥专用Hadoop网络故障排查脚本
NODE_IP="192.168.100.128"  # 目标节点IP
TARGET_PORT="44620"         # 目标端口

# 1. 基础网络检测
echo "==== 1. 网络连通性测试 ===="
ping -c 3 $NODE_IP
telnet $NODE_IP $TARGET_PORT

# 2. 路由与子网检查
echo "==== 2. 路由表与子网配置 ===="
ip route show default
ifconfig | grep "inet addr"

# 3. Hadoop服务端口校验
echo "==== 3. Hadoop端口配置 ===="
grep -i "port" $HADOOP_CONF_DIR/*.xml
ss -tunlp | grep $TARGET_PORT

# 4. 防火墙临时关闭(测试用)
echo "==== 4. 临时关闭防火墙 ===="
sudo systemctl stop firewalld
sudo iptables -F

# 5. 重启相关服务
echo "==== 5. 重启服务 ===="
hadoop-daemon.sh restart nodemanager
yarn rmadmin -refreshNodes

✅ 四、问题解决验证

  1. 重新执行上传命令:
    hadoop fs -put large_file.log /user/hdfs/
  2. 监控任务进度:
    yarn application -list 查看应用状态
    hdfs dfs -du -h /user/hdfs/large_file.log 确认文件完整性

💡 飞哥经验总结

  1. 分层排查思维:从网络层(ping/telnet)→ 服务层(端口配置)→ 安全层(防火墙)逐步定位
  2. 日志为王 :Hadoop 日志($HADOOP_LOG_DIR)是故障诊断的核心线索
  3. 集群一致性:确保所有节点的 hosts 文件、主机名解析完全一致

遇到类似问题的小伙伴,欢迎在评论区留言讨论!如果觉得本文有用,记得点赞 + 收藏,关注【小飞敲代码】获取更多大数据实战干货~

参考资料

1\] Hadoop 官方文档 - Network Configuration \[2\] Linux 网络故障排查权威指南

相关推荐
盛满暮色 风止何安1 小时前
IS-IS 中间系统到中间系统
服务器·网络·网络协议·安全·web安全·网络安全·智能路由器
斯普信专业组2 小时前
Apidog MCP服务器,连接API规范和AI编码助手的桥梁
运维·服务器·人工智能
wayuncn2 小时前
深度解析物理机服务器故障修复时间:影响因素与优化策略
运维·服务器·物理机·服务器租用·服务器托管·物理服务器·哈尔滨idc
一人一萧十只猫�2 小时前
Linux SSH 远程连接全攻略:从加密原理到实战配置(含图解)
linux·服务器·网络
人间不清醒ab2 小时前
Ubuntu ping网络没有问题,但是浏览器无法访问到网络
linux·运维·ubuntu
babytiger2 小时前
为 Windows 和 Ubuntu 中设定代理服务器的详细方法
linux·windows·ubuntu
黄暄2 小时前
Docker项目部署深度解析:从基础命令到复杂项目部署
运维·笔记·docker·容器·持续部署
默心3 小时前
centos把jar包配置成服务并设置开机自启
linux·centos·jar
秦jh_3 小时前
【Linux网络】传输层协议UDP
linux·运维·服务器·网络·udp
IvanCodes3 小时前
十一、Hive JOIN 连接查询
大数据·hive