【かふかこねくと】

Kafka Connect とは?

最終更新:
💡 Kafkaへの入口と出口を作る、コネクターの実行基盤

Apache Kafkaと外部システムの間でデータを取り込んだり書き出したりするためのフレームワーク。接続先に対応したコネクターを導入・設定して使う。

📌 このページのポイント
Sourceで取り込み、Sinkで書き出す外部DBなど入力元Source取り込みKafkaトピックデータを保持・配信Sink書き出し外部DBなど出力先接続先に対応したコネクターを導入・設定分散実行の並列度には制約がある
上段はSourceで外部からKafkaへ、下段はSinkでKafkaから外部へ運ぶ流れです。上下の外部システムは別の接続先を表します。コネクターがすべて標準搭載されているという意味ではありません。
ひよこ ひよこ
Kafka Connectは、Kafkaそのものとは何が違うの?
ペンギン先生 ペンギン先生
Kafkaがデータをトピックに保存・配信する基盤なら、Connectは外部との受け渡しを担うコネクターを動かす基盤だよ。Sourceコネクターは外部からKafkaへ取り込み、SinkコネクターはKafkaから外部へ書き出すんだ。
ひよこ ひよこ
設定を書くだけで、どんなシステムにもつながる?
ペンギン先生 ペンギン先生
接続先に対応したコネクターが必要だよ。プラグインを導入し、接続情報・権限・データ形式などを設定するんだ。対応品があれば連携コードを減らせるけれど、なければ自作も必要になる。利用条件も提供元ごとに確認しよう。
ひよこ ひよこ
設定は必ずJSONファイルなの?
ペンギン先生 ペンギン先生
コネクターの設定はキーと値で表すよ。REST APIではJSONで登録し、単独モードではpropertiesファイルやJSONファイルも使えるんだ。ワーカーの設定とコネクターの設定を区別すると理解しやすいよ。
ひよこ ひよこ
データベースの変更を取り込むCDCにも使える?
ペンギン先生 ペンギン先生
例えばDebeziumのコネクターで変更イベントをKafkaへ送れるよ。MySQLではbinlog、PostgreSQLではWALから論理デコードされた変更を使うんだ。同じログの仕組みではなく、DB側の設定や権限も必要だよ。
ひよこ ひよこ
ワーカーを増やせば、速く処理できるの?
ペンギン先生 ペンギン先生
分散モードではタスクを複数ワーカーに割り当てられるよ。ただしコネクターが分割できる仕事やKafkaのパーティションなどに制約があり、tasks.maxも上限を指定するだけなんだ。軽いレコード変換はConnectで行えるけれど、複雑な集計などは別の処理基盤も検討するよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Kafka Connect」って出てきたら「Kafkaと外部システムをつなぐコネクター基盤」と思えばだいたいOK!
📖 おまけ:英語の意味
「Kafka Connect」 = Kafkaと外部システムを接続する基盤
💬 Connectは「接続する」という意味。Apache Kafkaの構成要素として、外部とのデータ連携を扱うよ。

参考資料

← 用語集にもどる