1. 诊断现象 flink任务重启后hdfs存储存在很多之前中间状态文件无法转为最终状态文件,导致中间状态文件的数据下游不可见。

2. 诊断原因分析 因为在flink任务取消的时候存在checkpoint未最终完成,这些文件就会以中间状态文件存在 3.解决办法 Flink任务重启的时候从检查点重启,这样可以避免flink的state数据,kafka的offset数据等关键数据丢失,待新任务的检查点自动切换到新任务实例的检查点的时候,旧flink任务的中间状态文件就可以直接手动清除了,对于已经存入中间状态的数据,flink会从旧任务的最近已完成的checkpoint开始重新计算,这样旧任务的中间状态文件内的数据会重新生成,不会引起数据丢失 4.优化建议 如果hdfs滚动落地的中间状态文件数量很多,单个文件较小,则可以适当调整hdfs文件落地的滚动策略 5.具体操作 5.1 查看待取消任务的检查点位置 检查点位置:/flink/checkpoints/632527f64593fcb3ea035be07c79a862/chk-1 5.2 从检查点重启flink任务 flink run –s hdfs:///flink/checkpoints/632527f64593fcb3ea035be07c79a862/chk-1/_metadata 其他参数依旧 5.3 验证新任务是否从旧任务检

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: