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

news2025/5/20 5:38:34

🌟 飞哥带你攻克 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 host
	at 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 网络故障排查权威指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2379740.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received.

环境&#xff1a; vllm 0.8.5 java 17 Qwen3-32B-FP8 问题描述&#xff1a; JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received. WARNING: Unsupported upgrade request. INFO: - "POST /v1/chat/completions HTTP/1.1&…

基于 CSS Grid 的网页,拆解页面整体布局结构

通过以下示例拆解网页整体布局结构&#xff1a; 一、基础结构&#xff08;HTML骨架&#xff09; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"…

psotgresql18 源码编译安装

环境&#xff1a; 系统&#xff1a;centos7.9 数据库&#xff1a;postgresql18beta1 #PostgreSQL 18 已转向 DocBook XML 构建体系&#xff08;SGML 未来将被弃用&#xff09;。需要安装 XML 工具链&#xff0c;如下&#xff1a; yum install -y docbook5-style-xsl libxsl…

虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系

虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系1. 什么是Pawn&#xff1f;2. 什么是胶囊体&#xff08;Capsule Component&#xff09;&#xff1f;3. Pawn与胶囊体的具体关系&#xff08;1&#x…

Vue环境下数据导出PDF的全面指南

文章目录 1. 前言2. 原生浏览器打印方案2.1 使用window.print()实现2.2 使用CSS Paged Media模块 3. 常用第三方库方案3.1 使用jsPDF3.2 使用html2canvas jsPDF3.3 使用pdfmake3.4 使用vue-pdf 4. 服务器端导出方案4.1 前端请求服务器生成PDF4.2 使用无头浏览器生成PDF 5. 方法…

Linux中的DNS的安装与配置

DNS简介 DNS&#xff08;DomainNameSystem&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。 DNS使用的是53端口 通常DNS是以UDP这个较快速的数据传输协议来查询的&#xff0c;但是没有查…

linux服务器与时间服务器同步时间

内网部署服务器&#xff0c;需要同步时间 使用系统内置的systemctl-timesyncd进行时间同步 1.编辑配置文件 sudo nano /etc/systemd/timesyncd.conf修改添加内容入下 [Time] NTP10.100.13.198 FallbackNTP#说明 #NTP10.100.13.198&#xff1a;你的主 NTP 时间服务器 IP #Fall…

【数据结构篇】排序1(插入排序与选择排序)

注&#xff1a;本文以排升序为例 常见的排序算法&#xff1a; 目录&#xff1a; 一 直接插入排序&#xff1a; 1.1 基本思想&#xff1a; 1.2 代码&#xff1a; 1.3 复杂度&#xff1a; 二 希尔排序&#xff08;直接插入排序的优化&#xff09;&#xff1a; 2.1 基本思想…

《Linux服务与安全管理》| DNS服务器安装和配置

《Linux服务与安全管理》| DNS服务器安装和配置 目录 《Linux服务与安全管理》| DNS服务器安装和配置 第一步&#xff1a;使用dnf命令安装BIND服务 第二步&#xff1a;查看服务器server01的网络配置 第三步&#xff1a;配置全局配置文件 第四步&#xff1a;修改bind的区域…

Notepad++ 学习(三)使用python插件编写脚本:实现跳转指定标签页(自主研发)

目录 一、先看成果二、安装Python Script插件三、配置Python脚本四、使用脚本跳转标签页方法一&#xff1a;通过菜单运行方法二&#xff1a;设置快捷键&#xff08;推荐&#xff09; 五、注意事项六、进阶使用 官网地址&#xff1a; https://notepad-plus-plus.org/Python Scri…

Stable Diffusion 学习笔记02

模型下载网站&#xff1a; 1&#xff0c;LiblibAI-哩布哩布AI - 中国领先的AI创作平台 2&#xff0c;Civitai: The Home of Open-Source Generative AI 模型的安装&#xff1a; 将下载的sd模型放置在sd1.5的文件内即可&#xff0c;重启客户端可用。 外挂VAE模型&#xff1a…

python:pymysql概念、基本操作和注入问题讲解

python&#xff1a;pymysql分享目录 一、概念二、数据准备三、安装pymysql四、pymysql使用&#xff08;一&#xff09;使用步骤&#xff08;二&#xff09;查询操作&#xff08;三&#xff09;增&#xff08;四&#xff09;改&#xff08;五&#xff09;删 五、关于pymysql注入…

机器学习-人与机器生数据的区分模型测试 - 模型融合与检验

模型融合 # 先用普通Pipeline训练 from sklearn.pipeline import Pipeline#from sklearn2pmml.pipeline import PMMLPipeline train_pipe Pipeline([(scaler, StandardScaler()),(ensemble, VotingClassifier(estimators[(rf, RandomForestClassifier(n_estimators200, max_de…

机器学习 day03

文章目录 前言一、特征降维1.特征选择2.主成分分析&#xff08;PCA&#xff09; 二、KNN算法三、模型的保存与加载 前言 通过今天的学习&#xff0c;我掌握了机器学习中的特征降维的概念以及用法&#xff0c;KNN算法的基本原理及用法&#xff0c;模型的保存和加载 一、特征降维…

嵌入式软件--stm32 DAY 6 USART串口通讯(下)

1.寄存器轮询_收发字符串 通过寄存器轮询方式实现了收发单个字节之后&#xff0c;我们趁热打铁&#xff0c;争上游&#xff0c;进阶到字符串。字符串就是多个字符。很明显可以循环收发单个字节实现。 然后就是接收字符串。如果接受单个字符的函数放在while里&#xff0c;它也可…

问题处理——在ROS2(humble)+Gazebo+rqt下,无法显示仿真无人机的相机图像

文章目录 前言一、问题展示二、解决方法&#xff1a;1.下载对应版本的PX42.下载对应版本的Gazebo3.启动 总结 前言 在ROS2的环境下&#xff0c;进行无人机仿真的过程中&#xff0c;有时需要调取无人机的相机图像信息&#xff0c;但是使用rqt&#xff0c;却发现相机图像无法显示…

朱老师,3518e系列,第六季

第一节&#xff1a;概述。 首先是 将 他写好的 rtsp 源码上传&#xff0c;用于分析。 已经拷贝完。 第二节&#xff1a; h264 编码概念。 编解码 可以用cpu, 也可以用 bsp cpu 编解码的效果不好。做控制比较好。 h264 由 VCL&#xff0c; NAL 组成。 NAL 关心的是 压缩…

ElasticSearch-集群

本篇文章依据ElasticSearch权威指南进行实操和记录 1&#xff0c;空集群 即不包含任何节点的集群 集群大多数分为两类&#xff0c;主节点和数据节点 主节点 职责&#xff1a;主节点负责管理集群的状态&#xff0c;例如分配分片、添加和删除节点、监控节点故障等。它们不直接…

一文掌握工业相机选型计算

目录 一、基本概念 1.1 物方和像方 1.2 工作距离和视场 1.3 放大倍率 1.4 相机芯片尺寸 二、公式计算 三、实例应用 一、基本概念 1.1 物方和像方 在光学领域&#xff0c;物方&#xff08;Object Space&#xff09;是与像方&#xff08;Image Space&#xff09;相对的…

LabVIEW机械振动信号分析与故障诊断

利用 LabVIEW 开发机械振动信号分析与故障诊断系统&#xff0c;融合小波变换、时频分布、高阶统计量&#xff08;双谱&#xff09;等先进信号处理技术&#xff0c;实现对齿轮、发动机等机械部件的非平稳非高斯振动信号的特征提取与故障诊断。系统通过虚拟仪器技术将理论算法转化…