Flink 问题排查 - 作业部署失败 现象:作业无法正常提交与启动
可能成因 |
确认方法 |
解决措施 |
程序包依赖与集群依赖存在版本冲突 |
日志:NoSuchMethodError/ IncompatibleClassChangeError/ ClassCastException |
1. 程序包中 Flink/Hadoop 相关依赖设为 provided2. 使用 Maven-Shade-Plugin 3. 调整 classloader.resolve-order |
程序包缺少依赖 |
日志:1.NoClassDefFoundError 2.NoMatchingTableFactory 3.Could not instantiate the executor |
程序包中添加 connector 依赖 程序包中添加 planner 依赖 升级 1.11 之后,程序包需要添加 flink-client 依赖 |
Flink Client 缺少依赖 |
Client 日志:Could not build the program from jar file. NoClassDefFoundError: hadoop/jersey |
Flink lib 目录添加 flink-hadoop-shade-uber-jar Flink lib 目录添加 jersey-core-jar |
集群资源不足 |
Client 日志:Deploy took more than 60s Slot allocation request timed out |
扩充集群资源 减少任务并行度 |
Flink 问题排查 - 作业运行异常 现象:作业突然停止运行且不恢复
可能成因 |
确认方法 |
解决措施 |
Source 算子实现方法不正确 |
JM 日志:作业结束于 FINISHED (SUCCEEDED) 状态 |
修改 Source 算子的实现,保持 while true 循环 |
作业重启次数达到阈值 |
TM 日志:restart strategy prevented it |
1. 找出作业崩溃重启原因 2. 增大 RestartStrategy 阈值或者 yarn.application-attempt 阈值 |
JVM 内存用量超出 YARN/K8s 阈值 |
JM 日志:Killing container |
通常因为 RocksDB 内存不受控导致,可升级为 Flink 1.11 以上版本 也可能是用户代码分配了直接内存 |
Flink 问题排查 - 作业处理缓慢 现象:作业输出量较稳定,但是不及预期值(5000 ~ 20000 条/秒/核)
可能成因 |
确认方法 |
解决措施 |
序列化、反序列化开销大 |