実行中のパイプラインの停止

実行中の Dataflow ジョブを停止する必要がある場合は、Dataflow Monitoring Interface または Dataflow コマンドライン インターフェースを使用してコマンドを発行することで停止できます。ジョブを停止するために発行できるコマンドには、[キャンセル] と [ドレイン] の 2 つがあります。

Cloud Dataflow モニタリング UI を使用したジョブの停止

ジョブを停止するには、Dataflow Monitoring Interface のジョブリストからジョブを選択します。ジョブの情報カードで、[ジョブを停止] をクリックします。

図 1: [ジョブを停止] ボタンがある Dataflow ジョブの情報カード。

[ジョブの停止] ダイアログに、ジョブの停止方法に関するオプションが表示されます。

図 2: [キャンセル] と [ドレイン] のオプションがある [ジョブの停止] ダイアログ。

[キャンセル] または [ドレイン] オプションを適宜選択し、[ジョブを停止] ボタンをクリックします。

キャンセル

[キャンセル] オプションを使用してジョブを停止すると、Dataflow サービスにジョブを即時に中止するよう通知されます。このサービスは、すべてのデータの取り込みと処理をできるだけ早く停止し、ジョブに関連付けられた Google Cloud リソースのクリーンアップを直ちに開始します。これらのリソースには、Compute Engine ワーカー インスタンスのシャットダウンと、I/O ソースまたはシンクへのアクティブな接続の終了が含まれることがあります。

[キャンセル] は処理を即時に停止するため、「処理中」のデータは失われることがあります。 「処理中」のデータとは、読み取られたがパイプラインによってまだ処理中のデータを指します。[キャンセル] コマンドを発行する前にパイプラインから出力シンクに書き込まれたデータは、出力シンクでまだアクセス可能な場合があります。

データ損失が問題にならない場合は、[キャンセル] オプションを使用してジョブを停止し、ジョブに関連する Google Cloud リソースをできるだけ早くシャットダウンするようにします。

ドレイン

[ドレイン] オプションを使用してジョブを停止すると、現在の状態でジョブを終了するよう Dataflow サービスに通知されます。ドレイン リクエストの受信後すぐに(通常、数分以内)入力ソースからの新しいデータの取り込みを停止します。ただし、Dataflow サービスは既存のリソース(ワーカー インスタンスなど)を保持して、パイプラインのバッファ内のデータの処理と書き込みを終了します。保留中のすべての処理と書き込みオペレーションが完了すると、Dataflow サービスはジョブに関連付けられている Google Cloud リソースをクリーンアップします。

パイプラインの停止時にデータの損失を防ぐには、ドレイン オプションを使用してジョブを停止します。

ジョブのドレインの影響

[ドレイン] コマンドを発行した場合、Dataflow は処理中のウィンドウを即時に終了し、すべてのトリガーを呼び出します。システムは、未処理の時間ベースのウィンドウの終了を待機しません。たとえば、[ドレイン] コマンドの発行時にパイプラインが 2 時間のウィンドウまで 10 分の場合、Dataflow はウィンドウが終了するまでの残り時間を待機しません。部分的な結果でウィンドウを即時に終了します。

パイプラインの変換の詳細ビューには、処理中の [ドレイン] コマンドの影響が表示されます。

図 3: ドレインが処理中の [ステップ] ビュー。ウォーターマークが最大値に進められていることに注意してください。