跳到主要内容
跳到主要内容

通过命名集合将 ClickHouse 与 Kafka 集成

引言

在本指南中,我们将探讨如何使用命名集合将 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 表创建一个表:

创建物化视图

创建一个物化视图,将数据从第一个 Kafka 表插入到第一个副本表中:

创建一个物化视图,将数据从第二个 Kafka 表插入到第二个副本表中:

验证设置

现在您应该可以在 Kafka 集群上看到相应的消费者组:

  • cluster_1_clickhouse_consumercluster_1
  • cluster_2_clickhouse_consumercluster_2

在任何 ClickHouse 节点上运行以下查询,以查看两个表中的数据:

注意

在本指南中,导入到两个 Kafka 主题中的数据是相同的。在您的情况下,它们可能会有所不同。您可以根据需要添加任意数量的 Kafka 集群。

示例输出:

这完成了通过命名集合将 ClickHouse 与 Kafka 集成的设置。通过将 Kafka 配置集中在 ClickHouse config.xml 文件中,您可以更轻松地管理和调整设置,确保流畅高效的集成。