Flink数据倾斜?到底啥意思?

大数据不怕数据大,分布式架构数据倾斜才是影响作业的罪魁祸首

数据倾斜是分布式计算中常见的问题,会严重影响作业性能。

数据倾斜场景

场景一:上游分区数据倾斜

上游 Kafka消息队列 各分区数据存在不均匀,在没有 keyBy 操作的情况下,有的分区数据量大,有的小。

场景二:keyBy 分区倾斜

在一些业务场景下,需要对某个字段进行 keyBy

数据倾斜影响

对于分布式的计算系统来说,不怕数据量大,就怕数据倾斜。因为分布式计算是将大数据集合拆成若干个小的数据集,在多个计算实例上执行计算逻辑,最终汇总计算结果,如果存在热点数据,导致某一个计算实例分配到的数据量远大于其他计算实例,那么整体的计算瓶颈就集中在该单节点上,类似于"木桶原理",最短的木块决定这个桶能装多少水。

(1)慢节点问题

数据集中在某些分区上(Subtask),导致数据严重不平衡,数据量大的节点处理速度慢,引发背压,checkpoint 连续失败等等。

(2)GC 频繁

过多的数据集中在某些 JVM(TaskManager),使得 JVM 的内存资源短缺,导致频繁 GC,导致延迟增大,吞吐下降。

(3)系统崩溃

严重情况下,单节点过大的数据可能突破该节点内存上限导致节点被kill,或者过长的 GC 导致 TaskManager 失联,可能影响系统内部崩溃。

如何定位

  1. 通过 Flink Web UI 各个 SubTasks/TaskManagers 的 Records Sent 和 Records Received 来确认。

这种单个节点数据量明显高于其他节点的,即存在数据倾斜情况。

通过 Checkpoint detail 里不同的 SubTask 的 Checkpointed Data Size 来判断是否数据倾斜。

感觉不错的宝宝可以送个花哈~ 感谢感谢~~

---点击下方送朵花按钮---

#大数据##offer##面试##面试题##八股##投票#
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务