第4章 Kafka Connect について


Kafka Connect は、Kafka ブローカーと他のシステムの間でデータをストリーミングする統合ツールです。もう 1 つのシステムは通常、データベースなどの外部データソースまたはターゲットです。

Kafka Connect はプラグインアーキテクチャーを使用して、コネクターの実装アーティファクトを提供します。プラグインは他のシステムへの接続を可能にし、データを操作するための追加の設定を提供します。プラグインには、コネクターや、データコンバーターや変換などの他のコンポーネントが含まれます。コネクターは、特定のタイプの外部システムで動作します。各コネクターは、その設定のスキーマを定義します。設定を Kafka Connect に指定して、Kafka Connect 内にコネクターインスタンス を作成します。次に、コネクターインスタンスは、システム間でデータを移動するための一連のタスクを定義します。

AMQ Streams は、分散モード で Kafka Connect を操作し、データストリーミングタスクを 1 つ以上のワーカー Pod に分散します。Kafka Connect クラスターは、ワーカー Pod のグループで設定されます。各コネクターは、1 つのワーカーでインスタンス化されます。各コネクターは、ワーカーのグループ全体に分散される 1 つ以上のタスクで設定されます。ワーカー間での分散により、拡張性の高いパイプラインが可能になります。

ワーカーは、データをある形式からソースシステムまたはターゲットシステムに適した別の形式に変換します。コネクターインスタンスの設定によっては、ワーカーが変換 (単一メッセージ変換 (SMT) とも呼ばれます) を適用する場合もあります。変換は、コンバージョンされる前に、特定のデータのフィルタリングなど、メッセージを調整します。Kafka Connect にはいくつかの組み込みの変換がありますが、必要に応じてプラグインによって他の変換を提供できます。

4.1. Kafka Connect でのデータのストリーミング方法

Kafka Connect は、コネクターインスタンスを使用して他のシステムと統合し、データをストリーミングします。

Kafka Connect は、起動時に既存のコネクターインスタンスをロードし、データストリーミングタスクとコネクター設定をワーカー Pod 全体に分散します。ワーカーは、コネクターインスタンスのタスクを実行します。各ワーカーは個別の Pod として実行され、Kafka Connect クラスターの耐障害性を高めます。ワーカーよりも多くのタスクがある場合は、ワーカーには複数のタスクが割り当てられます。ワーカーに障害が発生した場合、そのタスクは Kafka Connect クラスター内のアクティブなワーカーに自動的に割り当てられます。

ストリーミングデータで使用される主な Kafka Connect コンポーネントは次のとおりです。

  • タスクを作成するためのコネクター
  • データを移動するタスク
  • タスクを実行するワーカー
  • データを操作するための変換
  • データを変換するコンバーター

4.1.1. コネクター

コネクターは、次のいずれかのタイプにすることができます。

  • データを Kafka にプッシュするソースコネクター
  • Kafka からデータを抽出するシンクコネクター

プラグインは、Kafka Connect がコネクターインスタンスを実行するための実装を提供します。コネクターインスタンスは、Kafka との間でデータを転送するために必要なタスクを作成します。Kafka Connect ランタイムは、必要な作業をワーカー Pod 間で分割するタスクを調整します。

MirrorMaker 2 は、Kafka Connect フレームワークも使用します。この場合、外部データシステムは別の Kafka クラスターです。MirrorMaker 2 の専用コネクターは、ソースとターゲットの Kafka クラスター間のデータレプリケーションを管理します。

注記

MirrorMaker 2 コネクターに加えて、Kafka は例として 2 つのコネクターを提供します。

  • File Stream Source Connector は、ワーカーのファイルシステム上のファイルから Kafka にデータをストリーミングし、入力ファイルを読み取り、各行を特定の Kafka トピックに送信します。
  • FileStreamSinkConnector は、Kafka からワーカーのファイルシステムにデータをストリーミングし、Kafka トピックからメッセージを読み取り、出力ファイルにそれぞれの行を書き込みます。

次のソースコネクターの図は、外部データシステムからレコードをストリーミングするソースコネクターのプロセスフローを示しています。Kafka Connect クラスターは、ソースコネクターとシンクコネクターを同時に操作する場合があります。ワーカーはクラスター内で分散モードで実行されています。ワーカーは、複数のコネクターインスタンスに対して 1 つ以上のタスクを実行できます。

Kafka へのソースコネクターストリーミングデータ

Kafka Connect source connector worker interaction in distributed mode

  1. プラグインがソースコネクターの実装アーティファクトを提供する
  2. 1 つのワーカーがソースコネクターインスタンスを開始する
  3. ソースコネクターがデータをストリーミングするタスクを作成する
  4. タスクが並行して実行され、外部データシステムをポーリングしてレコードを返す
  5. 変換がレコードのフィルタリングや再ラベル付けなど、レコードを調整する
  6. コンバーターがレコードを Kafka に適した形式に変換する
  7. ソースコネクターが KafkaConnectors または Kafka Connect API を使用して管理される

次のシンクコネクターの図は、Kafka から外部データシステムにデータをストリーミングするときのプロセスフローを示しています。

Kafka からのシンクコネクターストリーミングデータ

Kafka Connect sink connector worker interaction in distributed mode

  1. プラグインがシンクコネクターの実装アーティファクトを提供する
  2. 1 つのワーカーがシンクコネクターインスタンスを開始する
  3. シンクコネクターがデータをストリーミングするタスクを作成する
  4. タスクが並行して実行され、Kafka をポーリングしてレコードを返す
  5. コンバーターがレコードを外部データシステムに適した形式に変換する
  6. 変換がレコードのフィルタリングや再ラベル付けなど、レコードを調整する
  7. シンクコネクターが KafkaConnectors または Kafka Connect API を使用して管理される

4.1.2. タスク

Kafka Connect ランタイムによって調整されたデータ転送は、並行して実行されるタスクに分割されます。タスクは、コネクターインスタンスによって提供される設定を使用して開始されます。Kafka Connect は、タスク設定をワーカーに配布します。ワーカーは、タスクをインスタンス化して実行します。

  • ソースコネクタータスクは外部データシステムをポーリングし、ワーカーが Kafka ブローカーに送信するレコードのリストを返します。
  • シンクコネクタータスクは、外部データシステムに書き込むためにワーカーから Kafka レコードを受信します。

シンクコネクターの場合、作成されるタスクの数は、消費されるパーティションの数に関連します。ソースコネクターの場合、ソースデータの分割方法はコネクターによって定義されます。コネクター設定で tasksMax を設定することにより、並行して実行できるタスクの最大数を制御できます。コネクターが作成するタスク数は、最大設定よりも少ないなる可能性があります。たとえば、ソースデータをその数のパーティションに分割できない場合、コネクターは作成するタスクが少なくなる可能性があります。

注記

Kafka Connect のコンテキストでは、partition (パーティション) は、外部システムのトピックパーティションまたは shard of data (データのシャード) を意味する場合があります。

4.1.3. ワーカー

ワーカーは、Kafka Connect クラスターにデプロイされたコネクター設定を採用します。設定は、Kafka Connect によって使用される内部 Kafka トピックに保存されます。ワーカーは、コネクターとそのタスクも実行します。

Kafka Connect クラスターには、同じ group.id を持つワーカーのグループが含まれています。ID は、Kafka 内のクラスターを識別します。ID は、KafkaConnect リソースを介してワーカー設定で割り当てられます。ワーカー設定では、Kafka Connect の内部トピックの名前も指定されます。トピックには、コネクター設定、オフセット、およびステータス情報が格納されます。これらのトピックのグループ ID と名前も、Kafka Connect クラスターに固有である必要があります。

ワーカーには、1 つ以上のコネクターインスタンスとタスクが割り当てられます。Kafka Connect をデプロイするための分散型アプローチは、フォールトトレラントでスケーラブルです。ワーカー Pod に障害が発生した場合、実行中のタスクはアクティブなワーカーに再割り当てされます。Kafka Connect リソースの replicas プロパティーを設定することで、ワーカー Pod のグループに追加できます。

4.1.4. 変換

Kafka Connect は、外部データを変換します。シングルメッセージは、変更メッセージをターゲットの宛先に適した形式に変換します。たとえば、変換によってフィールドが挿入または名前変更される場合があります。変換では、データをフィルタリングしてルーティングすることもできます。プラグインには、ワーカーが 1 つ以上の変換を実行するために必要な実装が含まれています。

  • ソースコネクターは、データを Kafka でサポートされている形式に変換する前に変換を適用します。
  • シンクコネクターは、データを外部データシステムに適した形式に変換した後に変換を適用します。

変換は、コネクタープラグインに含めるために JAR ファイルにパッケージ化された Java クラスファイルのセットで設定されます。Kafka Connect は一連の標準変換を提供しますが、独自の変換を作成することもできます。

4.1.5. コンバーター

ワーカーはデータを受信すると、コンバーターを使用してデータを適切な形式に変換します。KafkaConnect リソースのワーカー config でワーカーのコンバーターを指定します。

Kafka Connect は、JSON や Avro などの Kafka でサポートされている形式との間でデータを変換できます。また、データを構造化するためのスキーマもサポートしています。データを構造化形式に変換しない場合は、スキーマを有効にする必要はありません。

注記

特定のコネクターのコンバーターを指定して、全ワーカーに該当する一般的な Kafka Connect ワーカー設定をオーバーライドすることもできます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.