如何优化Flink任务的并行度设置?

提问者:帅平 问题分类:面试刷题
如何优化Flink任务的并行度设置?
3 个回答
丶殇
丶殇
如果是高吞吐低延迟的场景的话,优化方法如下:
1、​增大并行度
根据CPU核数和TaskManager Slot数,线性扩展处理能力。
2、​链式优化​:
合并轻量级算子(如Map+Filter)为Task Chain,减少线程切换。
发布于:3周前 (05-19) IP属地:
岛是海碎了的心
岛是海碎了的心
如果是反压的场景的话,优化测量如下:
1、提升瓶颈算子并行度​
通过Flink Web UI定位反压节点,针对性增加其并行度。
2、异步IO与批量处理​:减少外部系统调用延迟(如数据库写入)。
AsyncDataStream.unorderedWait(data, new AsyncDatabaseRequest(), 1000, TimeUnit.MILLISECONDS, 100);
发布于:3周前 (05-19) IP属地:
玖墨
玖墨
如果出现数据倾斜,则可以使用的优化方法如下:
1、预分散Key​:对Key添加随机前缀(如key + "-" + random.nextInt(10)),二次聚合。
data.keyBy(key -> key + "-" + ThreadLocalRandom.current().nextInt(10))
    .sum(1)
    .keyBy(key -> key.split("-")[0])
    .sum(1);
2、​强制重分布​:使用rebalance()或rescale()均匀分配数据。
data.rebalance().map(...);  // 全量Shuffle
发布于:3周前 (05-19) IP属地:
我来回答