停止正在运行的流水线

如果您需要停止正在运行的 Dataflow 作业,可以使用 Dataflow 监控界面Dataflow 命令行界面发出命令。您可以发出下面两种命令来停止作业:取消排空

使用 Cloud Dataflow 监控界面停止作业

要停止作业,请从 Dataflow 监控界面中的作业列表选择相应作业。在作业信息卡上,点击停止作业

图 1:带有“停止作业”按钮的 Dataflow 作业信息卡。

系统会显示停止作业对话框,其中有如何停止作业的选项:

图 2:包含“取消”和“排空”选项的“停止作业”对话框。

根据需要选择取消排空选项,然后点击停止作业按钮。

取消

使用取消选项停止作业时,就是要求 Dataflow 服务立即取消作业。该服务将尽可能快地停止所有数据提取和处理操作,并立即开始清理关联到作业的 Google Cloud 资源。这可能包括关停 Compute Engine 工作器实例,并断开与 I/O 源或接收器的活跃连接。

由于使用“取消”选项会立即停止处理过程,因此您可能会丢失所有“运行中”数据。 “运行中”数据是指已读取但仍在由流水线处理的数据。对于在发出“取消”命令之前已从流水线写入输出接收器的数据,它们在输出接收器上可能仍处于可访问状态。

如果您不太在意数据丢失,可使用“取消”选项来停止作业,以确保系统尽快关停与作业关联的 Google Cloud 资源。

排空

使用排空选项停止作业时,就是要求 Dataflow 服务在当前状态下结束作业。收到排空请求后,您的作业很快(通常在几分钟之内)就会停止从输入源提取新数据。不过,Dataflow 服务会保留所有现有资源(例如工作器实例),以完成流水线中任何已缓冲数据的处理和写入操作。在完成所有等待中的处理操作和写入操作后,Dataflow 服务会清理与相应作业关联的 Google Cloud 资源。

如果您希望在关闭流水线时防止数据丢失,请使用排空选项停止作业。

排空作业的影响

在发出“排空”命令后,Dataflow 会立即关闭所有正在处理的窗口并触发所有触发器。系统不会等待任何基于时间的未完成窗口结束运行。例如,如果在您发出“排空”命令时,您的流水线已在一个时长两小时的窗口中运行了十分钟,则 Dataflow 不会等待剩余部分结束运行。它会立即关闭窗口并生成部分结果。

在流水线转换的详细视图中,您可以看到正在处理的“排空”命令的效果:

图 3:排空过程中的步骤视图;请注意,水印已提升为最高值。