Dataflow の概要

Dataflow は、ストリーミングとバッチのデータ処理パイプラインを実行するためのフルマネージド サービスです。コンピューティング リソースの自動プロビジョニングと管理が可能で、一貫性があり信頼できる 1 回限りのデータ処理を行うことができます。Dataflow は、ストリーム分析、リアルタイム AI、センサーとログデータ処理、データの変換に関連するその他のワークフローなど、多くのデータ処理のユースケースをサポートしています。

パイプラインの作成またはテンプレートの使用

Dataflow 用のデータ パイプラインを作成するには、Apache Beam を使用します。これは、バッチとストリーミングの両方のデータ処理パイプラインを定義するオープンソースの統合モデルです。Apache Beam プログラミング モデルは、大規模なデータ処理の構造を単純化します。Apache Beam SDK の 1 つを使用して、パイプラインを定義するプログラムを構築します。次に、Dataflow でパイプラインを実行します。

Apache Beam モデルでは、有効な抽象化が提供されるため、個々のワーカーの調整やデータセットのシャーディングなど、分散処理の下層部分の細かい設定をユーザーが扱う必要がなくなります。Dataflow ではこれらの下層レベルの細かい設定が完全に管理されます。これにより、並列処理の物理的なオーケストレーションではなく、データ処理ジョブの論理的な構成に集中できます。つまり、ジョブの実行方法ではなく、ジョブの実行内容に焦点を絞ることができます。

独自のパイプラインを作成しない場合は、Google 提供の Dataflow テンプレートを使用できます。これらのテンプレートは、Pub/Sub からのストリーミング データの読み取りと Cloud Storage へのそれらの書き込み、Apache Kafka からのストリーミング データの読み取りと BigQuery へのそれらの書き込みなど、一般的なデータ変換を定義します。独自のカスタム Dataflow テンプレートを作成して、チームまたは組織全体でパイプラインを共有することもできます。

Dataflow テンプレートを使用すると、Dataflow パイプラインをデプロイ用にパッケージ化できます。適切な権限を持つユーザーであれば、テンプレートを使用してパイプラインをデプロイできます。テンプレートは、パイプライン設計とデプロイを区別します。たとえば、デベロッパーがテンプレートを作成し、データ サイエンティストが後でパラメータを使用して実行時にジョブをカスタマイズできるようにすることができます。

Dataflow の機能

Dataflow には、安全で信頼性に優れ、費用対効果の高いデータ パイプラインを大規模に実行するための多くの機能が用意されています。このセクションでは、Dataflow の機能の一部について説明します。

水平自動スケーリングでスケールアウトする

水平自動スケーリングを有効にすると、Dataflow サービスは、ジョブの実行に必要な適切な数のワーカー インスタンスを自動的に選択します。また、Dataflow は、実行時にジョブの特性を考慮して、より多くのワーカーまたは少数のワーカーを動的に再割り当てします。

垂直自動スケーリングでスケールアップする

垂直自動スケーリングを使用すると、Dataflow はジョブの要件に合わせてワーカーで使用可能なメモリを動的にスケールアップまたはスケールダウンします。この機能は、メモリ不足エラーに対するジョブの復元性を高めるとともに、パイプラインの効率を最大化するように設計されています。Dataflow は、パイプラインをモニタリングして、ワーカーのメモリの空き容量不足や過剰な容量を検出し、それらをより大きなメモリ容量や小さい容量の新しいワーカーに置き換えます。

サーバーレス パイプラインを実行する

Dataflow Prime を使用するとサーバーレス パイプラインを実行できます。Dataflow Prime は、Dataflow を基盤とするサーバーレス データ処理プラットフォームです。Dataflow Prime は、コンピューティングと状態を分離したアーキテクチャを使用し、効率と生産性の向上を目的とした機能を提供します。Dataflow Prime を使用するパイプラインでは、リソース管理が自動化され、最適化されます。これにより、運用コストを削減し、診断能力を向上させることができます。

パイプラインのステージごとにリソースを最適化する

Dataflow Prime の Right Fitting を使用すると、パイプラインごとに最適化されたリソースプールを作成し、リソースの無駄を省くことができます。

ジョブをモニタリングする

Dataflow ジョブをモニタリング インターフェースに表示して操作できます。モニタリング インターフェースには、Dataflow ジョブのリスト、各パイプラインのグラフィカルな表現、各ジョブのステータスの詳細、パイプラインを実行している Google Cloud サービスに関する情報へのリンク、ジョブ実行中のエラーまたは警告、その他の診断と指標が表示されます。

ジョブのパフォーマンスを可視化する

Dataflow コンソールの [実行の詳細] タブにある Job Visualizer を使用すると、Dataflow ジョブのパフォーマンス指標を確認し、並列化のボトルネックなどの非効率的なコードを検出してジョブのパフォーマンスを最適化できます。パイプラインの各ステージに関連付けられているステップのリストを表示することもできます。

ストリーミング リソースをストレージから分離する

Streaming Engine は、ストリーミング パイプラインの状態の保存からコンピューティングを分離します。パイプライン実行の一部をワーカー VM から Dataflow に移動することで、自動スケーリングとデータ レイテンシを大幅に改善します。

データを効率的にシャッフルする

Dataflow Shuffle は、データのグルーピングやと結合で使用されるシャッフル オペレーションを、ワーカー VM からバッチ パイプラインの Dataflow に移行します。バッチ パイプラインにより数百 TB までシームレスにスケーリングされます。チューニングの必要はありません。

バッチ処理の費用を削減する

柔軟なリソース スケジューリング(FlexRS)により、高度なスケジューリング技術、Dataflow Shuffle サービス、プリエンプティブル VM インスタンスと通常の VM の組み合わせを使用して、バッチ処理のコストを削減できます。

ノートブックからパイプラインを実行する

Vertex AI Notebooks を使用して、反復処理を通じてパイプラインを一から構築し、Dataflow でジョブを実行します。Apache Beam パイプラインを段階的に作成するには、パイプラインのグラフを「入力、評価、出力」ループ(REPL)のワークフローで検査します。ノートブックを使用すると、最先端のデータ サイエンスと ML のフレームワークに従って直感的に使える環境でパイプラインを記述できます。

スマートな推奨事項を取得する

ML で得られた推奨事項に基づいてパイプラインを最適化します。この推奨事項は、ジョブのパフォーマンスの改善、費用の削減、エラーのトラブルシューティングに役立ちます。

顧客管理の暗号鍵でパイプラインを保護する

顧客管理の暗号鍵(CMEK)を使用すると、Cloud KMS で管理可能な鍵で保存データを暗号化できます。CMEK で保護されたバッチまたはストリーミング パイプラインを作成できます。また、ソースとシンクにある CMEK で保護されたデータにアクセスできます。

ネットワークとサブネットワークを指定する

Dataflow の VPC Service Controls と統合することで、データ流出のリスクを軽減し、データ処理環境のセキュリティを強化できます。Dataflow ジョブを実行するときに、ネットワークまたはサブネットワークを指定することも、その両方を指定することもできます。

プライベート IP を構成する

パブリック IP をオフにすると、データ処理インフラストラクチャのセキュリティを強化できます。Dataflow ワーカーにパブリック IP アドレスを使用しないことで、Google Cloud プロジェクトの割り当てに対して消費されるパブリック IP アドレスの数を減らすことができます。

始める

Dataflow を使い始める前に、いずれかのクイックスタートをお試しください。