将 ClickHouse 与 Kafka 通过命名集合集成
介绍
在本指南中,我们将探讨如何使用命名集合将 ClickHouse 连接到 Kafka。使用命名集合的配置文件提供了几个优势:
- 集中管理配置设置,易于操作。
- 可以在不更改 SQL 表定义的情况下更改设置。
- 通过检查单个配置文件,易于审查和故障排除配置。
本指南已在 Apache Kafka 3.4.1 和 ClickHouse 24.5.1 上测试。
假设
本文档假设您具有:
- 一个正常工作的 Kafka 集群。
- 已设置和运行的 ClickHouse 集群。
- 基本的 SQL 知识,并熟悉 ClickHouse 和 Kafka 的配置。
先决条件
确保创建命名集合的用户具有必要的访问权限:
有关启用访问控制的更多详细信息,请参阅 用户管理指南。
配置
将以下部分添加到您的 ClickHouse config.xml
文件中:
配置说明
- 调整 Kafka 地址和相关配置以匹配您的 Kafka 集群设置。
<kafka>
之前的部分包含 ClickHouse Kafka 引擎参数。有关参数的完整列表,请参阅 Kafka 引擎参数。<kafka>
中的部分包含扩展的 Kafka 配置选项。有关更多选项,请参阅 librdkafka 配置。- 此示例使用
SASL_SSL
安全协议和PLAIN
机制。根据您的 Kafka 集群配置调整这些设置。
创建表和数据库
在您的 ClickHouse 集群上创建必要的数据库和表。如果您将 ClickHouse 作为单个节点运行,则省略 SQL 命令中的集群部分,并使用其他引擎而不是 ReplicatedMergeTree
。
创建数据库
创建 Kafka 表
为第一个 Kafka 集群创建第一个 Kafka 表:
为第二个 Kafka 集群创建第二个 Kafka 表:
创建副本表
为第一个 Kafka 表创建一个表:
为第二个 Kafka 表创建一个表:
创建物化视图
创建一个物化视图,将数据从第一个 Kafka 表插入到第一个副本表中:
创建一个物化视图,将数据从第二个 Kafka 表插入到第二个副本表中:
验证设置
您现在应该在您的 Kafka 集群上看到相应的消费者组:
cluster_1_clickhouse_consumer
在cluster_1
cluster_2_clickhouse_consumer
在cluster_2
在您的任何 ClickHouse 节点上运行以下查询,以查看两个表中的数据:
注意
在本指南中,两个 Kafka 主题中摄取的数据是相同的。就您的情况而言,它们会有所不同。您可以根据需要添加任意数量的 Kafka 集群。
示例输出:
这完成了通过命名集合将 ClickHouse 与 Kafka 集成的设置。通过将 Kafka 配置集中在 ClickHouse config.xml
文件中,您可以更轻松地管理和调整设置,确保高效的集成。