Dataflow 瓶颈检测器简介

由于处理时间较长的操作,控制台中出现瓶颈检测。

您可以使用 Dataflow 瓶颈检测器诊断 Dataflow 流处理作业中的进度阻塞问题,并优化流水线性能。检测器会自动突出显示数据流水线中限制吞吐量并导致积压的组件。

通过确定执行延迟的确切位置和可能原因,瓶颈检测器可让您排查复杂的 Apache Beam 流处理流水线问题,而无需进行试错猜测。

瓶颈检测的工作原理

流处理流水线通常由一系列通过队列连接的步骤组成。数据按顺序从上游来源流经中间转换到下游接收器。

在许多流水线中,整体吞吐量受单个组件或 步骤的限制,从而形成 瓶颈 ,或导致作业进度减慢。如果下游组件处理数据的速度低于上游组件生成数据的速度,则它们之间的队列会开始填满。例如,如果上游流处理 Shuffle 组件生成数据的速度快于下游用户定义的 DoFn 处理数据的速度,则队列会填满。

随着时间的推移,这种延迟会影响流水线中的所有步骤。上游的积压会增加,最终限制流水线从原始来源注入和处理输入的速度。这种行为称为 积压传播

发生积压传播时,流水线的多个阶段可能会显示运行状况不佳或速度缓慢,即使只有一个步骤导致了底层限制也是如此。瓶颈检测器会持续监控所有组件(包括以下组件)的执行延迟:

  • 流处理 Shuffle
  • 用户定义的函数(DoFn 线程)
  • 持久状态提交

当组件的处理延迟超过 5 分钟时,Dataflow 瓶颈检测器会将其注册为瓶颈。它会在作业执行图中突出显示该步骤,并提供详细的诊断信息。

瓶颈的种类

由于热键或键并行度不足,导致控制台中出现瓶颈检测。

当瓶颈处于活跃状态时,瓶颈检测器会将其归类为以下状态之一:

  • 处理卡住,没有任何进展:流水线的进度 在受影响的步骤中完全停止。
  • 正在进行处理,但进度落后:当前步骤 正在运行,但处理传入数据的速度低于数据到达的速度, 导致积压不断增加。
  • 正在进行处理,但一直存在积压:该步骤处理 数据的速度与传入数据的速度相同。积压没有增加,但仍处于较高水平。
  • 正在进行处理,且积压正在减少:该步骤正在 成功清除积压。如果您启动的流水线存在积压,则此状态是正常状态,无需干预。

如需详细了解如何查看瓶颈检测器诊断信息以及如何 解决这些问题,请参阅 检测和解决瓶颈

后续步骤