当前位置: 首页 > news >正文

flink yarn 问题排查

Job detail page is not available while it is in state INITIALIZING.

## 🚨 常见原因及解决方法
tail -f log/flink-*.log
# flink-conf.yaml
state.backend: filesystem
state.checkpoints.dir: file:///path/to/checkpoints
state.savepoints.dir: file:///path/to/savepoints
high-availability.storageDir: file:///path/to/

## 🧪 示例排查流程
# 查看 jobmanager 日志
tail -f log/flink-*-jobmanager-*.log

# 查看 taskmanager 日志
tail -f log/flink-*-taskmanager-*.log

# 查看 web ui 页面
open http://<jobmanager-host>:8081
```

在日志中查找类似关键词:
- `Could not start rpc endpoint`
- `Failed to allocate slots`
- `Connection refused`
- `ClassNotFoundException`
- `Initialization failed`

✅ 日志内容:
2025-07-13 20:43:02,080 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
2025-07-13 20:43:03,280 INFO conf.Configuration: resource-types.xml not found
2025-07-13 20:43:03,282 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'.

1. **ResourceManager 地址为 `/0.0.0.0:8032`**
- 表示客户端连接的是本地地址或未正确配置的 RM 地址。
- 这可能是因为 `yarn-site.xml` 中没有明确指定 ResourceManager 的地址,导致客户端尝试连接默认值(0.0.0.0)。

2. resource-types.xml not found

你提供的日志片段和输出来自 **YARN 客户端**(可能是 `yarn node -list` 或运行 Flink on YARN 时的输出),我们可以从中分析出一些关键信息,并结合你的问题“**YARN 只能看到一个节点**”来逐步排查。

✅ 日志内容:
2025-07-13 20:43:02,080 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
2025-07-13 20:43:03,280 INFO conf.Configuration: resource-types.xml not found
2025-07-13 20:43:03,282 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'.

1. ResourceManager 地址为 `/0.0.0.0:8032`
- 表示客户端连接的是本地地址或未正确配置的 RM 地址。
- 这可能是因为 `yarn-site.xml` 中没有明确指定 ResourceManager 的地址,导致客户端尝试连接默认值(0.0.0.0)。

2. **`resource-types.xml not found`**
- 是警告,不影响基本功能。除非你自定义了资源类型(如 GPU、FPGA 等),否则可以忽略。

✅ 输出结果:
Total Nodes:1
Node-Id             Node-State Node-Http-Address       Number-of-Running-Containers
hadoop-001:37195                RUNNING   hadoop-001:8042

说明当前 YARN 集群中只识别了一个 **NodeManager 节点**:`hadoop-001`。

## 🔍 常见原因分析

| 原因 | 描述 | 检查方法 |
|------|------|----------|
| ❌ NodeManager 未在其他节点启动 | 其他节点上没有启动 NM,自然不会显示 | 在各节点执行 `jps` 查看是否有 `NodeManager` 进程 |
| ❌ NM 无法注册到 RM | 网络不通、RM 地址配置错误、防火墙限制等 | 查看 NM 日志中是否有关于连接 RM 的报错 |
| ❌ RM 地址配置不正确 | RM 绑定在 `0.0.0.0`,但 NM 配置的 RM 地址不对 | 检查 `yarn-site.xml` 中 `yarn.resourcemanager.address` 是否正确 |
| ❌ DNS/Hosts 配置问题 | 主机名解析失败导致通信失败 | 使用 `ping`, `nslookup`, `getent hosts` 测试主机名解析 |
| ❌ NodeManager 启动异常 | NM 因配置错误或权限问题无法正常运行 | 查看 `$HADOOP_HOME/logs/yarn-xxx-nodemanager-xxx.log` |

✅ 推荐检查步骤

1️⃣ 检查所有节点是否启动了 NodeManager

在每个节点上运行:
jps | grep -i nodemanager

如果没有输出,说明该节点的 NodeManager 没有启动。

2️⃣ 查看 NodeManager 日志确认是否注册成功

进入 NodeManager 所在节点的日志目录(通常是 `$HADOOP_HOME/logs/`),查看日志文件:
tail -n 100 yarn-<user>-nodemanager-<hostname>.log

搜索关键字:

- `Connection refused`
- `failed to connect to RM`
- `registering with RM`

3️⃣ 检查 `yarn-site.xml` 中 ResourceManager 地址配置确保所有节点的 `yarn-site.xml` 中包含如下配置(HA 模式下略不同):

<property><name>yarn.resourcemanager.address</name><value>rm-hostname:8032</value> <!-- 替换为实际 RM 主机 -->
</property><property><name>yarn.resourcemanager.scheduler.address</name><value>rm-hostname:8030</value>
</property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>rm-hostname:8031</value>
</property><property><name>yarn.resourcemanager.webapp.address</name><value>rm-hostname:8088</value>
</property>

如果你使用的是 **YARN HA 模式**,请参考我之前回复中的完整 HA 配置。

4️⃣ 检查网络连通性

从 NodeManager 所在节点尝试 telnet 到 ResourceManager 的 8032 端口:
telnet rm-hostname 8032
# 或者
nc -zv rm-hostname 8032

如果失败,说明网络不通或 RM 没有监听这个端口。

### 5️⃣ 检查 ResourceManager 是否监听了正确的地址和端口

在 ResourceManager 节点运行:
netstat -tulnp | grep 8032

正常输出应类似:
tcp6 0 0 :::8032 :::* LISTEN 12345/java

## ✅ 示例修复流程总结

| 步骤 | 目标 | 命令/操作 |
|------|------|-----------|
| 1️⃣ | 确保所有节点 NM 已启动 | `jps` |
| 2️⃣ | 查看 NM 日志确认连接状态 | `tail yarn-xxx-nodemanager.log` |
| 3️⃣ | 检查 RM 地址配置是否正确 | 修改 `yarn-site.xml` |
| 4️⃣ | 检查网络是否通畅 | `telnet`, `nc` |
| 5️⃣ | 确认 RM 是否监听了对应端口 | `netstat -tulnp` |

📌 总结

| 检查项 | 是否需要处理 |
|--------|---------------|
| JobManager 是否运行正常 | ✅ |
| TaskManager 是否在线 | ✅ |
| 是否有可用 slot | ✅ |
| 日志中是否有错误 | ✅ |
| 网络是否通 | ✅ |
| 作业是否有阻塞逻辑 | ✅ |
| 高可用配置是否正确 | ✅ |

http://www.lryc.cn/news/602217.html

相关文章:

  • 同态滤波算法详解:基于频域变换的光照不均匀校正
  • 第4章唯一ID生成器——4.3 基于时间戳的趋势递增的唯一ID
  • 测试用例设计常用方法
  • Datawhale AI夏令营--Task2:理解项目目标、从业务理解到技术实现!
  • 用于 Web 认证的 抗量子签名——ML-DSA 草案
  • me.js - 基于angular的前端模块化框架
  • 【氮化镓】GaN同质外延p-i-n二极管中星形与三角形扩展表面缺陷的电子特性
  • 基于Vue3.0+Express的前后端分离的任务清单管理系统
  • 学习Python中Selenium模块的基本用法(2:下载浏览器驱动)
  • 【前端】Tab切换时的数据重置与加载策略技术文档
  • 三角洲摸金模拟器(简易版本)(开源)
  • Claude Launcher:支持Kimi K2的Claude Code可视化启动工具
  • ofd文件转pdf
  • iphone手机使用charles代理,chls.pro/ssl 后回车 提示浏览器打不开该网页
  • 【Spring Boot 快速入门】二、请求与响应
  • 搜索引擎高级搜索指令大全(Google、百度等浏览器通用)
  • nvim cspell
  • 打通视频到AI的第一公里:轻量RTSP服务如何重塑边缘感知入口?
  • 中国自然灾害影响及损失数据
  • Ubuntu 安装redis和nginx
  • 【JSqlParser】sql解析器使用案例
  • jimfs:Java内存文件系统,脱离磁盘IO瓶颈利器
  • 全球Wi-Fi室外天线市场洞察2024–2032:规模、驱动因素与技术演进
  • Mybatis_4
  • Focusing on Tracks for Online Multi-Object Tracking—CVPR2025多目标跟踪(TrackTrack)
  • Ethereum:Geth运维实战,geth export与geth import命令的实用性深度评估
  • 使用 Qt Installer Framework(IFW)进行打包
  • 网络安全第14集
  • 8.1 ESP32CAM 服务器 网络摄像头
  • 【mysql】—— mysql中的timestamp 和 datetime(6) 有什么区别,为什么有的地方不建议使用timestamp