当前位置: 首页 > 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.dtcms.com/a/302135.html

相关文章:

  • [VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测
  • 数据驱动与智能重构:定制开发开源AI智能名片S2B2C商城小程序对数字营销话语权的重塑
  • Spring ai 调用大模型
  • 盲盒抽卡机小程序系统开发:连接线上线下娱乐新桥梁
  • uniapp 更新apk有缓存点不动,卸载安装apk没有问题。android
  • 小程序组件的生命周期,以及在小程序中进行接口请求的方法设置
  • 网络编程概述与UDP编程
  • 【esp32s3】7 - VSCode + PlatformIO + Arduino + 构建项目
  • 基于神经网络的手写数字识别系统
  • 【论文阅读53】-CNN-LSTM-滑坡风险随时间变化研究
  • 【论文阅读】Safety Alignment Should Be Made More Than Just a Few Tokens Deep
  • cacti的RCE
  • 计算机视觉---Halcon概览
  • 实用工具类分享:BeanCopyUtils 实现对象深浅拷贝高效处理
  • 墨者:SQL手工注入漏洞测试(MySQL数据库-字符型)
  • haproxy实列
  • 开源AI智能体-JoyAgent集成Deepseek
  • AI论文阅读方法+arixiv
  • 元宇宙工厂前端新形态:Three.js与WebGL实现3D产线交互的轻量化之路
  • 使用std::transform实现并发计算
  • Java 开发新人,入职后的环境搭建和配置
  • 安宝特方案丨AI算法能力开放平台:适用于人工装配质检、点检、实操培训
  • Netty中trySuccess和setSuccess的区别
  • python-内存管理
  • 【FAQ】MS Dynamics 365 Sales配置方法汇总
  • Linux中应用程序的安装于管理
  • Java面试宝典:Spring Boot
  • 基于BEKK-GARCH模型的参数估计、最大似然估计以及参数标准误估计的MATLAB实现
  • 【Linux学习】(12)环境变量
  • 自定义spring-boot-starter