Google Cloud で Kafka データを移動する

このドキュメントでは、外部 Kafka データを Google Cloudに移行するオプション、障害復旧(DR)、BigQuery との統合、データベースからの変更データ キャプチャ(CDC)について、デベロッパー、アーキテクト、意思決定者にアドバイスします。

Google Cloud内で、Kafka データを Google Cloud Managed Service for Apache Kafka クラスタ、または BigQuery テーブルや Cloud Storage のロケーションなどの別の Google プロダクトに移動できます。概要については、次の表をご覧ください。

ユースケース データソース データ デスティネーション おすすめの解決策
データのコピー セルフマネージド Apache Kafka クラスタ Managed Service for Apache Kafka クラスタ Connect クラスタに MirrorMaker 2.0 ソース コネクタを作成します。
データ ウェアハウス内のデータを分析する Managed Service for Apache Kafka クラスタ BigQuery Connect クラスタに BigQuery シンクコネクタを作成します。
同期を使用してデータを移行する セルフマネージド Kafka クラスタ Managed Service for Apache Kafka クラスタ Connect クラスタに MirrorMaker 2.0 ソース コネクタを作成します。
リージョン間でクラスタを複製する Managed Service for Apache Kafka(リージョン A) Managed Service for Apache Kafka クラスタ(リージョン B) Connect クラスタに MirrorMaker 2.0 ソース コネクタを作成します。
データをバックアップする Managed Service for Apache Kafka Cloud Storage Connect クラスタに Cloud Storage シンクコネクタを作成します。
データベースの変更をキャプチャする リレーショナル データベース、Spanner、Bigtable Managed Service for Apache Kafka Dataflow で Apache Beam パイプラインを実行する
Apache Spark でデータを処理する Managed Service for Apache Kafka Apache Spark Compute Engine で Dataproc を実行する

Google Cloud には、Kafka データを統合するためのソリューションがいくつか用意されています。ニーズと既存のインフラストラクチャに応じて、それぞれに独自のメリットがあります。最適な統合方法は、既存のシステム、現在のスキルセット、インフラストラクチャの管理能力によって異なります。

Kafka Connect を使用する

Google Cloud Managed Service for Apache Kafka を使用すると、Kafka Connect を実行するクラスタをプロビジョニングできます。Kafka Connect の主な目的は、移行、バックアップ、障害復旧、高可用性、データ統合などのユースケースで使用するために、Managed Service for Apache Kafka クラスタを他のシステムに接続することです。Managed Service for Apache Kafka の最も一般的なデータ統合タスクには、Kafka Connect をおすすめします。Kafka Connect には次のようなメリットがあります。

  • 組み込みのコネクタを使用して、外部の Kafka クラスタをさまざまな Google Cloud データソースとシンクに接続します。外部 Kafka クラスタには、Managed Service for Apache Kafka、オンプレミス Kafka クラスタ、カスタム クラウド デプロイが含まれます。サポートされているコネクタは次のとおりです。

    • MirrorMaker 2.0 コネクタ

    • BigQuery シンク

    • Cloud Storage シンク

    • Pub/Sub ソース

    • Pub/Sub シンク

  • Google Cloudのインフラストラクチャのスケーラビリティと信頼性を活用して、データ パイプラインで増加するデータ量を処理し、高可用性を維持できます。

  • Kafka Connect インフラストラクチャの管理に関する運用負荷をGoogle Cloudにオフロードします。

  • Google Cloudのモニタリング ツールとロギング ツールを使用して、Kafka Connect クラスタをモニタリングして管理します。

Kafka Connect の詳細については、Kafka Connect の概要をご覧ください。

Dataflow を使用する

Google Cloudのサーバーレス データ処理サービスは、サーバーレスのストリーム データとバッチデータの統合を提供します。Dataflow を使用して、Kafka データを BigQuery データセットや Cloud Storage バケットなどのさまざまなシンクに移動できます。Dataflow パイプラインは、Dataflow テンプレートを使用するか、Apache Beam パイプラインをデプロイしてデプロイできます。Dataflow のデプロイは、次の要素に基づいて選択します。

  • より簡単で迅速なデプロイ(特に一般的なデータ統合タスク)を行うには、コンソールから直接デプロイできる事前構築済みの Dataflow テンプレートを選択します。

  • 柔軟性、制御、カスタム ロジックを必要とする複雑なユースケースを最大限に活用するには、Apache Beam パイプラインを選択します。

組み込みテンプレート

組み込みの Dataflow テンプレートは、コード不要で使いやすいジョブ ウィザードでデプロイできる、事前定義された Apache Beam パイプラインです。Dataflow には、Kafka データを Google Cloudにエクスポートするための Dataflow テンプレートがいくつか用意されています。

カスタム Apache Beam パイプライン

前のセクションで説明した Dataflow テンプレートは、すべての要件を満たしていない可能性があります。たとえば、これらのテンプレートでサポートされていないソースやシンクと Kafka データを統合する必要がある場合があります。レコードに対して変換、正規化、ミューテーションを行う必要が生じることもあります。

このようなシナリオでは、Apache Beam SDK を使用して、Dataflow で実行できるパイプラインを作成できます。

パイプライン、PCollection、変換、ランナーなどの主要なコンセプトを含む Apache Beam プログラミング モデルについては、Apache Beam のプログラミング モデルをご覧ください。

SDK のインストール、プログラミング ガイド、インタラクティブ環境など、Apache Beam プログラミングの開始に関するリソースについては、Apache Beam を使用してパイプラインを構築するをご覧ください。このドキュメントでは、パイプラインの設計、作成、テストへのリンクと、ストリーミング パイプラインの例も提供します。

変更ストリーム(変更データ キャプチャ)を Kafka に書き込む必要がある場合は、Dataflow パイプラインの一部として次のコンポーネントを使用することをおすすめします。

Dataflow には、Dataflow パイプラインで Kafka を使用するためのリソースがいくつか用意されています。

Kafka Connect と Dataflow のどちらかを選択する

Kafka クラスタ間でデータを転送する場合、特に Managed Service for Apache Kafka に転送する場合は、通常、Kafka Connect が最適なソリューションです。Kafka Connect の一部である MirrorMaker 2.0 は、クラスタの移行、バックアップ、障害復旧、基本的な変換などのタスクに適しています。Kafka Connect は、基本的なメッセージ単位の変更に対して、レコード単位の変換をサポートしています。

複雑な変換を必要とする大量のデータ移行には、Dataflow が適しています。Dataflow の強みは、データがターゲットの Managed Service for Apache Kafka クラスタに到達する前に、データ クレンジング、拡充、集計などの複雑なストリームベースのオペレーションを実行できることです。Dataflow では、高度なウィンドウ処理と調整ロジックを使用して複数のデータ ストリームを結合できます。これは、複雑なデータ相関と集計に不可欠です。この機能により、Dataflow は、基本的なメッセージ単位の変更に限定される Kafka Connect と差別化されます。

Spark パイプラインに Dataproc を使用する

Apache Spark と Hadoop のワークロード向けのこのフルマネージド サービスは、既存の Spark パイプラインがある場合に適しています。Apache Spark ユーザーは、Dataproc を使用して、既存の Spark デプロイを Managed Service for Apache Kafka に接続できます。Dataproc は、Spark パイプライン用の Google Cloud のフルマネージド サービスであり、クラスタのライフサイクル管理用のツールが含まれています。たとえば、Kafka からストリーミング データを処理する Spark アプリケーションがあり、このアプリケーションを Google Cloudに移行する場合は、Dataproc が適切な選択肢になります。

Spark Streaming と Kafka については、Apache Spark に統合ガイドが用意されています。一般的な Kafka ワークフローのデプロイを支援するため、Dataproc には多数のオープンソース テンプレートが用意されています。