0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

著者: 伊藤 雅博, 株式会社日立製作所

はじめに

本稿ではApache Kafkaを構成するコンポーネントの1つである、Kafka Connectの概要とユースケースを紹介します。Kafka Connectのより詳細なアーキテクチャや具体的な構築手順については、次回以降の記事で紹介します。

記事一覧:

  1. Kafka Connectの概要とユースケース(本稿)
  2. Kafka Connectのアーキテクチャとチューニングポイント
  3. Kafka Connectを分散モードで動かしてみた

Kafka Connectの位置づけ

Apache Kafkaは以下のようなコンポーネントで構成されています。メッセージキューを構成するKafka Brokerを中心に、メッセージを格納・参照するクライアントとなるコンポーネント群があります。

本稿ではKafkaのコンポーネントの1つであるKafka Connectについて解説します。

なお、Apache Kafkaの概要については以下をご参照ください。

Kafka Connectの概要

Kafka Connectとは、 Kafkaと外部のシステムとの間でデータを連携するためのフレームワークです。外部のシステムとは、例えばソフトウェアやデバイス、データベース、クラウドサービスなどです。Kafka Connectを活用することで、Kafkaを介して様々なシステム間でデータを転送できます。

Kafka Connectにおけるデータ転送は「コネクタ」が実行します。コネクタには、外部システムのデータをTopicに転送するSourceコネクタと、Topicのデータを外部システムに転送するSinkコネクタの2種類が存在します。コネクタは常駐プロセスとして動作し、データを継続的に転送し続けます。

Kafka Connectは、このコネクタを実装するためのJavaライブラリと、実装したコネクタを実行・管理するための基盤を提供します。

例えばSinkコネクタを実装する場合は、KafkaのTopicからメッセージを読み出して、任意の変換処理を行い、外部のデータベースに格納するような処理を、Kafka Connectのライブラリを使用して実装します。

なお、そのまま利用可能な実装済みのサードパーティ製コネクタが100種類以上存在するため、基本的にコネクタを自作する必要はありません。主要なサードパーティ製コネクタについては後ほど説明します。

Kafka Connectの動作モードと実行基盤

Kafka Connectにはスタンドアロンモードと分散モードの2種類の動作モードがあります。

観点 スタンドアロンモード 分散モード
動作環境 1台のサーバで動作 複数台のサーバで動作可能
処理性能 低い 高い(スケールアウトで並列分散処理)
障害耐性 なし あり(自動フォールトトレランス)
実行管理 CLIで実施 REST APIで実行管理
推奨用途 ローカル環境での開発・テスト 本番環境

1台のサーバで実行する場合でも、本番環境では分散モードの構成が推奨となります。

分散モードでは、複数台のサーバ上のWorkerインスタンスでグループ(クラスタ)を組み、その上でコネクタを実行・管理します。

分散モードで実行するコネクタは、複数のTaskによる並列分散処理が可能です。また、処理中にサーバ障害が発生しても、自動的に別のサーバにあるWorkerが処理(Task)を引継ぎ、稼働を継続します。

コネクタの起動、停止、状態確認などはREST API経由で実行します。

Kafka Connectのユースケース

変更データキャプチャ(CDC)

Kafka Coonectの活用例として、データベース間でデータを同期する変更データキャプチャ(Change Data Capture, CDC)があります。CDCでは、あるデータベースにおけるデータ更新(挿入・更新・削除)を、別のデータベースにほぼリアルタイムで反映します。

CDCは以下のようなケースで利用されます。

RDBMSからデータレイク・データウェアハウスへのオフロード

基幹系システムで稼働しているRDBMSのデータを分析したいとします。しかし分析クエリは大量のデータを読み出すため、基幹系システムに大きな負荷がかかります。

そのため一般的には、基幹系システムのRDBMSのデータを、情報系システムのデータレイクやデータウェアハウスにコピーしてから分析します。このデータコピーにCDCを活用します。

CDCではデータ更新がほぼリアルタイムで反映されるため、常に最新の情報をもとにしたデータ分析が可能となります。

既存システムと新規システム間のデータ連携

例えば、オンプレミス上にある既存システムを残しながら、新規のシステムはクラウド上に構築したいとします。または、メインフレームで稼働するレガシーなシステムを残しながら、追加機能はKubernetesなどのコンテナ基盤上にデプロイしたいとします。

この既存システムと新規システムのDB間をCDCで同期することで、既存システムを残しながらシステムを拡張することができます。

主要なコネクタの入手先

そのまま利用可能な実装済みのコネクタを紹介します。

Apache Kafkaのコミュニティが提供するコネクタは、サンプルのFile connectorのみです。その他のコネクタはサードパーティー製となります。導入時は各コネクタのオープンソースライセンスもご確認ください。

代表的なコネクタ:

  • File connector

    • Kafka本体に付属するサンプルのコネクタ
    • ファイルの各行を読み取りメッセージとしてTopicに転送するSourceConnectorと、Topicの各メッセージをファイルに書き込むSinkConnectorで構成
    • サーバ上のローカルファイルを読み書きするため、スタンドアロンモードでのみ使用可能
  • Debezium

    • 変更データキャプチャ(CDC)によるデータベース間のデータ同期を行うコネクタ
    • 主要なRDBMS、KVS、データウェアハウスとの接続に対応
  • Kafka Connect JDBC Connector

    • JDBC互換のデータベースとの間でデータ転送を行うコネクタ
    • CDCが目的であれば、より差分更新機能が強力なDebeziumを推奨
  • Apache Camel Kafka Connector

    • Apache Camelは、複数のシステムを連携・統合するためのオープンソースのJavaフレームワーク
    • Camel Kafkaコネクタを使用すると、CamelコンポーネントをKafka Connectコネクタとして使用可能
    • これにより、Camelで連携可能な様々なシステムとKafkaを接続可能

コネクタの提供サイト:

  • Confluent Hub
    • 主にConfluent Platform向けのコネクタを公開しているサイト
    • Self-Hostedのものは基本的にApache Kafkaでも利用可能だが、オープンソースライセンスをご確認ください

他にも各パブリッククラウドベンダーや、Kafka関連の製品・サービスを提供している企業がコネクタを公開しています。

コネクタを自作したい場合は、以下の公式ドキュメントと次回の記事をご参照ください。

おわりに

本稿ではKafka Connectの概要とユースケース、代表的なコネクタを紹介しました。次回はKafka Connectのより詳細な内部構造と動作の流れ、およびチューニングのポイントを紹介します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?