Skip to main content

简介

本指南将介绍如何使用 命名集合 将 ClickHouse 连接到 Kafka。使用 命名集合 的配置文件有以下几个优势:
  • 可集中管理配置项,且管理起来更方便。
  • 无需修改 SQL 表定义即可调整设置。
  • 只需检查单个配置文件,即可更轻松地审查配置并排查问题。
本指南已在 Apache Kafka 3.4.1 和 ClickHouse 24.5.1 上测试验证。

前提假设

本文档假定你已具备:
  1. 一个正常运行的 Kafka 集群。
  2. 一个已设置完成并正在运行的 ClickHouse 集群。
  3. 具备基本的 SQL 知识,并熟悉 ClickHouse 和 Kafka 的配置。

前置条件

请确保创建 命名集合 的用户具有所需的访问权限:
有关如何启用访问控制的更多信息,请参阅用户管理指南

配置

将以下内容添加到 ClickHouse 的 config.xml 文件中:

配置说明

  1. 请调整 Kafka 地址及相关配置,使其与您的 Kafka 集群设置相匹配。
  2. <kafka> 前面的部分包含 ClickHouse Kafka 引擎参数。有关完整参数列表,请参阅 Kafka 引擎参数
  3. <kafka> 内的部分包含扩展的 Kafka 配置选项。更多选项请参阅 librdkafka 配置
  4. 本示例使用 SASL_SSL 安全协议和 PLAIN 机制。请根据您的 Kafka 集群配置调整这些设置。

创建表和数据库

在 ClickHouse 集群上创建所需的数据库和表。如果你以单节点方式运行 ClickHouse,请省略 SQL 命令中的集群相关部分,并使用其他任意引擎替代 ReplicatedMergeTree

创建数据库

创建 Kafka 表

为第一个 Kafka 集群创建第一张 Kafka 表:
为第二个 Kafka 集群创建第二张 Kafka 表:

创建复制表

为第一个 Kafka 表创建对应的表:
为第二个 Kafka 表创建对应的表:

创建 materialized views

创建一个 materialized view,将第一个 Kafka 表中的数据插入到第一个 复制表 中:
创建一个 materialized view,将第二个 Kafka 表中的数据插入到第二个复制表中:

验证设置

现在,你应该能在 Kafka 集群中看到对应的消费者组:
  • cluster_1_clickhouse_consumer 位于 cluster_1
  • cluster_2_clickhouse_consumer 位于 cluster_2
在任意一个 ClickHouse 节点上运行以下查询,即可查看这两个表中的数据:

注意

在本指南中,摄取到两个 Kafka topic 的数据是相同的;而在您的实际环境中,它们会有所不同。您可以根据需要添加任意数量的 Kafka 集群。 示例输出:
至此,已完成使用命名集合将 ClickHouse 与 Kafka 集成的设置。将 Kafka 配置集中放在 ClickHouse 的 config.xml 文件中后,您可以更轻松地管理和调整这些设置,从而使集成过程更简洁高效。
最后修改于 2026年7月3日