在 Dataflow 监控界面中,步骤信息面板会显示有关作业中各个步骤的信息。步骤表示流水线中的单个转换。 复合转换包含子步骤。
步骤信息面板会显示以下信息:
- 相应步骤的指标。
- 有关相应步骤的输入和输出集合的信息。
- 此步骤对应的阶段。
- 侧边输入指标。
使用步骤信息面板了解作业在每个步骤中的表现,并找到可能可以优化的步骤。
查看步骤信息
如需查看步数信息,请执行以下步骤:
在 Google Cloud 控制台中,依次前往 Dataflow > 作业页面。
选择一个作业。
点击作业图标签页以查看作业图。作业图以方框表示流水线中的每个步骤。
点击相应步骤。有关相应步骤的信息会显示在步骤信息面板中。
如需查看复合转换的子步骤,请点击
展开节点箭头。
步骤指标
步数信息面板会显示相应步数的以下指标。
系统水印和延迟时间
系统水印是指所有事件时间都已完全处理完毕的最新时间戳。系统水位延迟时间是指数据项等待处理的最长时间。
数据水印和延迟
数据水印是时间戳,用于标记此步骤的数据输入预估完成时间。数据水印滞后时间是指最新输入事件时间与数据水印之间的差值。
实际用时
实际用时是指在所有工作器的所有线程中完成以下操作所花费的大致总时长:
- 初始化步骤
- 处理数据
- 重排数据
- 结束步骤
对于复合步骤,实际用时等于在各个分步骤中所花费时间的总和。
实际用时可帮助您确定执行缓慢的步骤,以及诊断流水线中的哪个部分超出了预期执行时间。
最长操作延迟时间
最大操作延迟时间是指在该步骤中处理收到的消息或窗口过期所花费的最长时间。该指标是通过融合为单个阶段的各个步骤汇总计算得出的,因此该值代表整个阶段。
输入/输出集合
步骤信息面板会显示有关步骤中每个输入和输出集合的以下信息:
吞吐量图表。此图表显示了集合的吞吐量。您可以将图表显示为每秒处理的元素数,也可以显示为每秒处理的字节数。如需详细了解此指标,请参阅吞吐量。
添加到集合中的元素数量。
集合的估计大小(以字节为单位)。
优化阶段
阶段表示由 Dataflow 执行的单个工作单元。在作业图中选择某个步骤时,步骤信息面板会显示执行该步骤的阶段的名称,以及当前状态(例如正在运行、已停止或已成功)。
如需查看作业中各个阶段的更多信息,请使用执行详情标签页。
侧边输入指标
辅助输入是一种附加输入,转换每次处理元素时都可以访问该输入。如果某个转换创建或使用侧边输入,侧边信息面板会显示侧边输入集合的指标。
如果某个复合转换创建或使用侧边输入,请展开该复合转换,直到您看到创建或使用侧边输入的特定子转换。 选择该子转换以查看辅助输入指标。
创建侧边输入的转换
如果某个转换创建了侧边输入集合,侧边输入指标部分便会显示集合名称以及如下指标:
- 写入操作用时:写入侧边输入集合所花的时间。
- 写入的字节数:已写入侧边输入集合的总字节数。
- 从侧边输入读取用时和字节数:一个包含更多指标的表,这些指标用于使用侧边输入集合的所有转换(称为“侧边输入使用者”)。
从侧边输入读取用时和字节数表包含各侧边输入使用者的以下信息:
- 侧边输入使用者:侧边输入使用者的转换名称。
- 读取操作用时:此使用者在读取侧边输入集合上所花的时间。
- 读取的字节数:此使用者从侧边输入集合中读取的字节数。
下图显示了创建侧边输入集合的转换的侧边输入指标:
作业图包含一个展开的复合转换 (MakeMapView
)。用于创建辅助输入的子转换 (CreateDataflowView
) 处于选中状态,并且辅助输入指标显示在步骤信息面板中。
使用侧边输入的转换
如果某个转换使用一个或多个侧边输入,侧边输入指标部分便会显示从侧边输入读取用时和字节数表。此表会显示每个侧边输入集合的以下信息:
- 侧边输入集合:侧边输入集合的名称。
- 读取操作用时:转换在读取此侧边输入集合上所花的时间。
- 读取的字节数:转换从此侧边输入集合中读取的字节数。
下图显示了读取侧边输入集合的转换的侧边输入指标。
JoinBothCollections
转换用于读取侧边输入集合。在作业图中,JoinBothCollections
处于选中状态,并且辅助输入指标显示在步骤信息面板中。
识别侧边输入性能问题
侧边输入可能会影响流水线的性能。如果您的流水线使用侧边输入,Dataflow 会将集合写入永久性层(如磁盘),而您的转换操作会从该永久性集合中读取内容。这些读取和写入操作会影响作业的运行时间。
重复是常见的侧边输入性能问题。如果您的侧边输入 PCollection
过大,工作器将无法在内存中缓存整个集合。因此,工作器必须反复读取永久性侧边输入集合。
在下图中,侧边输入指标表明,从侧边输入集合读取的总字节数远远大于集合的实际大小(显示为写入的总字节数)。侧边输入集合为 563 MB,而使用转换读取的总字节数几乎达到 12 GB。
如需提升此流水线的性能,请重新设计算法,以避免循环访问或重新获取侧边输入数据。在此示例中,流水线生成两个集合的笛卡尔积。算法遍历整个侧边输入集合以获取主集合的各元素。您可以通过将主集合的多个元素一起进行批处理来改善管道的访问模式。这项更改可减少工作器必须重新读取侧边输入集合的次数。
如果您的流水线通过应用带有一个或多个大型侧边输入的 ParDo
来执行联接操作,则可能会出现另一个常见的性能问题。在这种情况下,工作器会将大部分处理时间用于从侧边输入集合中读取联接操作。
下图显示了此问题的侧边输入指标:
JoinBothCollections
转换的总处理时间超过 18 分钟。工作器将大部分处理时间(10 分钟)用于读取 10 GB 的侧边输入集合。如需提升此流水线的性能,请使用 CoGroupByKey
代替侧边输入。