自学内容网 自学内容网

Flink 优化-数据倾斜

一、判断是否存在数据倾斜

        相同 Task 的多个 SubTask 中,个别 SubTask 接收到的数据量明显大于其他 SubTask 接收到的数据量,通过 Flink Web UI 可以精确地看到每个 SubTask 处理了多少数据,即可判断出 Flink 任务是否存在数据倾斜。通常数据倾斜也会引起反压。

        另外,有时 Checkpoint detail 里不同的 SubTask 的 State size 也是一个分析数据倾斜的有用指标。

二、数据倾斜的解决方案

2.1 keyBy 之前发生数据倾斜

        如果 keyBy 之前就存在数据倾斜,上有算子的某些实例可能处理的数据较多,某些实例可能处理的数据较少,产生该情况可能是因为数据源的数据本身就不均匀,例如某些原因 kafka 的 topic 中某些 partition 的数据量较大,某些 partition 的数据量较小。对于不存在 keyBy 的 Flink 任务也会出现这种情况。这时需要然 Flink 任务强制进行 shuffle。使用 shuffle、rebalance 或 rescale 算子即可将数据均匀分配,从而解决数据倾斜的问题。

2.2 keyBy 后的聚合操作存在数据倾斜

查看 Web UI,情况如下:

2.2.1 为什么不能直接用二次聚合来处理?

 


原文地址:https://blog.csdn.net/xfp1007907124/article/details/154350717

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!