欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 手游 > 【Hadoop 实战】Yarn 模式上传 HDFS 卡顿时 “No Route to Host“ 错误深度解析与解决方案

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

2025/5/20 5:45:12 来源:https://blog.csdn.net/gtf212/article/details/148046976  浏览:    关键词:【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. 关键日志分析

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 hostat sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)...(省略栈跟踪)

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

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

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

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

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

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

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

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

1. 本地防火墙规则排查(Linux)
# 查看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 安全模式影响
# 检查HDFS安全模式状态
hdfs dfsadmin -safemode get 
# 若处于安全模式 → 强制退出(谨慎操作)
hdfs dfsadmin -safemode leave 

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

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

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

#!/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 网络故障排查权威指南

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词