Named コレクションを使用した ClickHouse と Kafka の統合
はじめに
このガイドでは、Named コレクションを使用して ClickHouse を Kafka に接続する方法を探ります。Named コレクションの構成ファイルを使用することで、いくつかの利点があります:
- 構成設定の集中管理と簡単な管理。
- SQL テーブル定義を変更せずに設定を変更できます。
- 単一の構成ファイルを確認することで、設定のレビューとトラブルシューティングが容易になります。
このガイドは、Apache Kafka 3.4.1 と ClickHouse 24.5.1 でテストされています。
前提条件
この文書は、以下を前提としています:
- 動作する Kafka クラスターがあること。
- 設定されて実行中の ClickHouse クラスターがあること。
- SQL の基本知識と、ClickHouse および Kafka の構成に慣れていること。
事前準備
Named コレクションを作成するユーザーが必要なアクセス権限を持っていることを確認してください:
アクセス制御を有効にする詳細については、ユーザー管理ガイドを参照してください。
構成
次のセクションを ClickHouse の config.xml
ファイルに追加してください:
構成ノート
- Kafka のアドレスと関連する構成を、Kafka クラスターの設定に合わせて調整してください。
<kafka>
の前のセクションには、ClickHouse Kafka エンジンパラメーターが含まれています。パラメーターの完全なリストについては、Kafka エンジンパラメーターを参照してください。<kafka>
内のセクションには、拡張された Kafka 構成オプションが含まれています。詳細なオプションについては、librdkafka 構成を参照してください。- この例では、
SASL_SSL
セキュリティプロトコルおよびPLAIN
メカニズムを使用しています。これらの設定は Kafka クラスター構成に基づいて調整してください。
テーブルおよびデータベースの作成
ClickHouse クラスターに必要なデータベースとテーブルを作成します。ClickHouse を単一ノードとして実行している場合は、SQL コマンドのクラスター部分を省略し、ReplicatedMergeTree
の代わりに他のエンジンを使用してください。
データベースを作成する
Kafka テーブルを作成する
最初の Kafka クラスタ用の最初の Kafka テーブルを作成します:
2 番目の Kafka クラスタ用の 2 番目の Kafka テーブルを作成します:
複製テーブルを作成する
最初の Kafka テーブル用のテーブルを作成します:
2 番目の Kafka テーブル用のテーブルを作成します:
マテリアライズドビューを作成する
最初の Kafka テーブルから最初の複製テーブルにデータを挿入するマテリアライズドビューを作成します:
2 番目の Kafka テーブルから 2 番目の複製テーブルにデータを挿入するマテリアライズドビューを作成します:
設定の確認
これで、Kafka クラスターに関する相対的なコンシューマグループが表示されるはずです:
cluster_1_clickhouse_consumer
はcluster_1
にcluster_2_clickhouse_consumer
はcluster_2
に
以下のクエリを任意の ClickHouse ノードで実行して、両方のテーブルにデータがあることを確認してください:
注意
このガイドでは、両方の Kafka トピックで取り込まれたデータは同じです。あなたのケースでは異なる場合があります。必要に応じて、好きなだけの Kafka クラスターを追加できます。
出力例:
これで、Named コレクションを使用して ClickHouse と Kafka を統合する設定が完了しました。ClickHouse の config.xml
ファイルに Kafka の設定を集中化することで、管理と設定の調整がより容易になり、効率的な統合が実現します。