Dataflow Prime を使用する

Dataflow Prime は、Apache Beam パイプライン用のサーバーレス データ処理プラットフォームです。Dataflow に基づく Dataflow Prime は、コンピューティング アーキテクチャと状態分離アーキテクチャを使用します。次のような場合、Dataflow Prime はパイプラインの効率を向上させる可能性があります。

Dataflow Prime は、バッチ パイプラインとストリーミング パイプラインの両方をサポートしています。デフォルトでは、Dataflow Prime はバッチ パイプラインに Dataflow ShuffleDataflow Runner v2 を使用します。

SDK バージョンのサポート

Dataflow Prime は、次の Apache Beam SDK をサポートします。

  • Apache Beam Python SDK バージョン 2.21.0 以降

  • Apache Beam Java SDK バージョン 2.30.0 以降

  • Apache Beam Go SDK バージョン 2.44.0 以降

SDK パッケージをダウンロードするか、リリースノートを確認する場合は、Apache Beam のダウンロードをご覧ください。

Dataflow Prime の機能

Dataflow Prime は、さまざまな種類のパイプラインに対して次の機能をサポートしています。

  • 垂直自動スケーリング(メモリ)。Python、Java、Go でストリーミング パイプラインをサポートします。
  • Right Fitting(リソースヒント)。Python と Java でバッチ パイプラインをサポートします。
  • Job Visualizer。Python と Java でバッチ パイプラインをサポートします。
  • スマート推奨事項。Python と Java のストリーミング パイプラインとバッチ パイプラインの両方をサポートします。
  • Data Pipelines。Python と Java のストリーミング パイプラインとバッチ パイプラインの両方をサポートします。

Job Visualizer、スマート推奨事項、Data Pipelines などの機能は、Dataflow Prime 以外のジョブでもサポートされています。

垂直自動スケーリング

この機能により、パイプラインのニーズに合わせて Dataflow ワーカー VM で使用可能なメモリが自動的に調整されます。これにより、メモリ不足エラーを防ぐことができます。Dataflow Prime では、垂直自動スケーリングと水平自動スケーリングが連動して、リソースを動的にスケーリングします。

詳細については、垂直自動スケーリングをご覧ください。

Right Fitting

この機能は、Apache Beam の機能であるリソースヒントを使用します。リソースヒントを使用すると、パイプライン全体またはパイプラインの特定のステップのリソース要件を指定できます。Right Fitting 機能を使用すると、パイプラインのステップ用にカスタマイズされたワーカーを作成できます。また、パイプライン リソースを指定することで、効率を最大化し、運用コストを削減できます。また、メモリ不足などのリソースエラーを回避することもできます。メモリと GPU のリソースヒントをサポートします。

Right Fitting では、Apache Beam 2.30.0 以降が必要です。

詳細については、Right Fitting をご覧ください。

Job Visualizer

この機能を使用すると、Dataflow ジョブのパフォーマンスを確認し、並列化のボトルネックなどの非効率的なコードを見つけることで、ジョブのパフォーマンスを最適化できます。Google Cloud コンソールの [ジョブ] ページで Dataflow ジョブをクリックすると、ジョブの詳細が表示されます。パイプラインの各ステージに関連付けられているステップのリストを表示することもできます。

詳しくは、実行の詳細をご覧ください。

スマート推奨事項

この機能を使用すると、ジョブの詳細ページの [診断] タブに表示される推奨事項に基づいてパイプラインを最適化し、トラブルシューティングを行えます。Google Cloud コンソールの [ジョブ] ページで Dataflow ジョブをクリックすると、ジョブの詳細が表示されます。

詳細については、推奨事項と診断をご覧ください。

Data Pipelines

この機能を使用すると、ジョブのスケジューリング、リソース使用率のモニタリング、ストリーミング データの鮮度目標の追跡、パイプラインの最適化を行うことができます。

詳細については、Data Pipelines の操作をご覧ください。

割り当てと上限の要件

Dataflow と Dataflow Prime に対する割り当てと上限は同じです。詳細については、割り当てと上限をご覧ください。

Data Pipelines を選択した場合、割り当てとリージョンにさらに影響があります。

サポートされていない機能

Dataflow Prime は、以下のものをサポートしていません。

  • 特定の VM タイプの指定。Python パイプラインの場合は --worker_machine_type または --machine_type フラグを使用します。Java パイプラインの場合は --workerMachineType フラグを使用します。

  • ワーカー VM の表示または SSH を使用したワーカー VM へのログイン。

  • Java パイプライン用の OrderedListState クラス。

  • Flexible Resource Scheduling(FlexRS)

  • 垂直自動スケーリングでの VPC Service Controls の使用。Dataflow Prime を有効にして VPC Service Controls の境界内で新しいジョブを起動する場合、ジョブは垂直自動スケーリングなしの Dataflow Prime を使用します。

  • NVIDIA マルチプロセス サービス(MPS)

  • 次の要件を満たす Java パイプラインでは、MapState クラスと SetState クラスを使用できます。

    • Streaming Engine を使用する
    • Apache Beam SDK バージョン 2.58.0 以降を使用する
    • Runner v2 を使用しない

前述または機能比較表で明記されていないパイプライン オプションはすべて、Dataflow と Dataflow Prime でも同じように機能します。

Dataflow Prime を使用する前に

Dataflow Prime を使用するには、既存のパイプライン コードを再利用し、Cloud Shell またはプログラムで Dataflow Prime のオプションを有効にします。

Dataflow Prime には、Dataflow Shuffle を使用するバッチジョブおよび Streaming Engine を使用するストリーミング ジョブと下位互換性があります。ただし、パイプラインを本番環境で使用する前に、Dataflow Prime でパイプラインをテストすることをおすすめします。

ストリーミング パイプラインが本番環境で実行されている場合に Dataflow Prime を使用するには、次の手順を行います。

  1. パイプラインを停止します。

  2. Dataflow Prime を有効にします。

  3. パイプラインを再実行します。

Dataflow Prime を有効にする

パイプラインで Dataflow Prime を有効にするには:

  1. Cloud Autoscaling API を有効にします。

    API を有効にする

    Dataflow Prime は Cloud Autoscaling API を使用してメモリを動的に調整します。

  2. パイプライン オプションで Prime を有効にします。

    パイプライン オプションは、プログラムまたはコマンドラインを使用して設定できます。サポートされている Apache Beam SDK のバージョンについては、次のフラグを有効にします。

Java

--dataflowServiceOptions=enable_prime

Python

Apache Beam Python SDK バージョン 2.29.0 以降

--dataflow_service_options=enable_prime

Apache Beam Python SDK バージョン 2.21.0 から 2.28.0:

--experiments=enable_prime

Go

--dataflow_service_options=enable_prime

テンプレートで Dataflow Prime を使用する

Dataflow テンプレートを使用している場合は、次のいずれかの方法で Dataflow Prime を有効にすることができます。

  1. [テンプレートからジョブを作成] ページから起動したジョブの場合:

    1. [テンプレートからジョブを作成] ページに移動します。

      [テンプレートからジョブを作成] に移動

    2. [Additional experiment] フィールドに「enable_prime」と入力します。

  2. コマンドライン インターフェースを介してテンプレートから起動されたジョブの場合は、--additional-experiments=enable_prime フラグを渡します。

  3. テンプレートを作成するときに Dataflow Prime を有効にするには、--experiments=enable_prime フラグを設定します。

Apache Beam ノートブックで Dataflow Prime を使用する

Apache Beam ノートブックを使用している場合、PipelineOptions を使用して Dataflow Prime をプログラムで有効にできます。

options = pipeline_options.PipelineOptions(
    flags=[],
    dataflow_service_options=['enable_prime'],
)

ノートブックで Dataflow オプションを設定する方法について詳しくは、ノートブックに作成されたパイプラインから Dataflow ジョブを起動するをご覧ください。

Dataflow と Dataflow Prime の機能比較

次の表では、Dataflow の両方のバリアントで利用可能な機能を比較します。

機能 Dataflow Prime Dataflow
Runner v2 デフォルトの機能。バッチジョブでは無効にするオプションなし。ストリーミング ジョブではオプションあり。 デフォルトの機能。バッチジョブでは無効にするオプションあり。ストリーミング ジョブではオプションあり。
バッチジョブの Dataflow Shuffle デフォルトの機能。無効にするオプションあり。 デフォルトの機能。無効にするオプションあり。
ストリーミング ジョブ用の Streaming Engine Java パイプラインではオプション機能。Python パイプラインでは常に有効。 Java パイプラインではオプション機能。2.45.0 以降の Python パイプラインでは常に有効
水平自動スケーリング デフォルトの機能。無効にするオプションあり。 デフォルトの機能。無効にするオプションあり。
垂直自動スケーリング デフォルトの機能。無効にするオプションあり。 該当なし
Right Fitting オプション機能 オプション機能
料金 サーバーレス課金 標準的な請求

次のステップ