Q&A
什么情况下会造成反压?
- 在实践中,很多情况下的反压是由于数据倾斜造成的,这点我们可以通过 Web UI 各个 SubTask 的 Records Sent 和Record Received 来确认,另外 Checkpoint detail 里不同 SubTask 的 State size也是一个分析数据倾斜的有用指标。
- 下游算子与低速的系统进行交互。可以进行异步IO
- 就是申请资源不足。可以调节并行度。
- 也有可能是TaskManager内存分布不合理,导致频繁的GC,造成反压,更严重的会导致TM失联。可以使用G1垃圾回收器
- 或者窗口太大,或者滑动步长太小。
Flink反压有什么影响?
反压还会影响到两项指标: checkpoint 时长和 state 大小
- 出现反压就会造成数据阻塞,barrier流不到下游的算子,会在称checkpoint时长(End to End Duration)增大。checkpoint 时间变长有可能导致 checkpoint 超时失败
- 由于barrier对齐机制,先到的barrier等待其他barrier到达的这个时间边长,导致存入缓存区的数据变多,导致state变大。而