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 | ✅ |
| 日志中是否有错误 | ✅ |
| 网络是否通 | ✅ |
| 作业是否有阻塞逻辑 | ✅ |
| 高可用配置是否正确 | ✅ |