Flink调优面试题及参考答案20道
1. 如何优化Flink的Checkpoint机制?
答案:
-
增大Checkpoint间隔:减少对作业吞吐量的影响(如从1分钟调整为5分钟)。
-
使用增量Checkpoint(RocksDB状态后端):仅上传变化的文件,降低IO压力。
-
调整超时时间:
checkpointTimeout
避免因短暂反压导致失败。 -
对齐优化:使用非对齐Checkpoint(
enableUnalignedCheckpoints
)避免反压阻塞。 -
调整最小间隔:
minPauseBetweenCheckpoints
避免重叠。
2. 如何处理Flink作业中的反压(Backpressure)?
答案:
-
定位源头:通过Web UI的反压监控或Metrics找到瓶颈算子。
-
增加并行度:提升瓶颈算子的处理能力。
-
优化状态访问:减少RocksDB的随机读写(如使用ValueState代替ListState)。
-
调整网络缓冲区:增加
taskmanager.network.memory.buffers
。 -
启用批处理模式:对窗口聚合使用
table.exec.mini-batch.enabled
。
3. RocksDB和FsStateBackend的区别及适用场景?
答案:
-
RocksDB:增量Checkpoint,状态存储在磁盘,适合大状态(如TB级)、高可用场景。
-
FsStateBackend:全量Checkpoint,状态存储在内存(溢出到磁盘),适合小状态、低延迟场景。