このドキュメントでは、外部 Kafka データを Google Cloudに移行するオプション、障害復旧(DR)、BigQuery との統合、データベースからの変更データ キャプチャ(CDC)について、デベロッパー、アーキテクト、意思決定者向けに説明します。
では、Kafka データを Google Cloud Managed Service for Apache Kafka クラスタまたは BigQuery テーブルや Cloud Storage ロケーションなどの別の Google プロダクトに移動できます。 Google Cloud概要については、次の表をご覧ください。
| ユースケース | データソース | データ デスティネーション | おすすめの解決策 |
|---|---|---|---|
| データのコピー | 自己管理型 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 で Managed Service for Apache Spark を実行します。 |
Kafka データの移行に役立つ推奨ソリューション
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にオフロードします。
のモニタリング ツールとロギング ツールを使用して、Kafka Connect クラスタをモニタリングして管理します。 Google Cloud
Kafka Connect の詳細については、Kafka Connect の概要をご覧ください。
Dataflow を使用する
Google Cloudのサーバーレス データ処理サービスは、サーバーレスのストリームとバッチデータの統合を提供します。Dataflow を使用すると、Kafka データを BigQuery データセットや Cloud Storage バケットなどのさまざまなシンクに移動できます。Dataflow テンプレートを使用するか、Apache Beam パイプラインをデプロイして、Dataflow パイプラインをデプロイできます。次の要素に基づいて 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 パイプラインの一部として次のコンポーネントを使用することをおすすめします。
DebeziumIO DebeziumIO。
Spanner 変更ストリーム for Spanner
Bigtable 変更ストリーム( Bigtable 用)
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 パイプラインに Managed Service for Apache Spark を使用する
Apache Spark と Hadoop ワークロード向けのフルマネージド サービスは、既存の Spark パイプラインがある場合に適しています。Apache Spark ユーザーは、Managed Service for Apache Spark を使用して、既存の Spark デプロイを Managed Service for Apache Kafka に接続できます。Managed Service for Apache Spark は、Google Cloud の Spark パイプライン向けのフルマネージド サービスで、クラスタのライフサイクル管理ツールが含まれています。 たとえば、Kafka からストリーミングデータを処理する Spark アプリケーションがあり、このアプリケーションを Google Cloudに移行する場合は、 Managed Service for Apache Spark が適切な選択肢となります。
Apache Spark には、Spark Streaming と Kafka の統合ガイドが用意されています。一般的な Kafka ワークフローのデプロイを支援するため、Managed Service for Apache Spark には、オープンソースのテンプレートが多数用意されています。