Skip to main content

算子信息

该模块主要提供任务运行的一些监控,包括算子/算子链的组成、数据延迟、数据读取写入、数据反压等情况

Vertex拓扑

通过分析实时任务代码与结构,平台在Vertex拓扑中展示了 Operator(算子)Operator Chain(算子链) 两种不同层级的拓扑图展示。

  • Operator 算子

    实时任务的基础元素,一个算子代表实时任务一个基础的处理过程。通过对代码及业务逻辑拆分为算子,用户能够直观查看到每一步处理过程中数据延迟、并行度、数据收发条数。

  • Operator Chain 算子链

    Flink 默认会将能链接的算子尽可能地进行链接(例如, 两个 map 转换操作),链接在一起算子链可以同一个线程中执行,从而提升性能。

image-20220708173118944

参数说明
Delay对应算子内数据延迟
Parallelism并行度,指算子链或算子的并行度。当前算子链与算子并行度保持一致。
Record Received当前算子/算子链接收到的数据条数。
Record Sent当前算子/算子链接发送的数据条数。
BackPressuredFlink反压系数。

反压(BackPressured)

  • 什么是反压

当下游数据的处理速度跟不上上游数据的产生速度,就会产生反压。如下链路:

Task2的数据处理速率是1M/S,但是上游Task1的数据处理速率是5M/S。此时Flink就会将反压信号发送给上游,上游就会对数据处理进行限速。导致整个链路的处理速率受一个节点的瓶颈限制。

img

  • 反压会造成什么影响

    • 整个链路数据处理速率变慢,数据延迟时长变大
    • Checkpoint的生成速度变慢甚至超时
    • Kafka数据堆积,无法被及时消费
  • 如何发现反压情况

    在Vertex拓扑图中,可以通过查看BackPressured指标分析反压情况。反压计算逻辑可以查看Flink官方解释。

    反压程度比例显示颜色
    OK0 < 比例 < = 10%蓝色
    LOW10% < 比例 < = 50%黄色
    HIGH50% < 比例 < = 100%红色
    note

    当算子链内部存在任一算子出现反压情况,对应算子链也会产生颜色变化。

  • 如何解决反压问题

    • 查看各个TaskManager/SubTask是否存在数据倾斜的情况
    • 调大任务的内存参数、并行度
    • 将下游算子和上游算子设置相同并发度,自动形成算子链。(减少线程间切换和数据缓存开销;提高吞吐量且降低延迟)