在分布式模式下使用 Kafka Connect,内部主题应该存在哪里

Posted

技术标签:

【中文标题】在分布式模式下使用 Kafka Connect,内部主题应该存在哪里【英文标题】:Using Kafka Connect in distributed mode, where are internal topics supposed to exist 【发布时间】:2022-01-15 03:04:03 【问题描述】:

作为我上一个问题Attempting to run Kafka Connect in distributed mode locally, problem with internal topics 的后续,我已经开始弄清楚可能发生了什么(我正在学习 Kafka)。

Kafka Connect 以一种或另一种方式需要三个内部主题:配置、偏移量和状态。这些主题是否应该存在于我从中消费数据的 Kafka 集群中?对于上下文,我正在做的是其他人设置了一个 Kafka 集群,其中包含主题(消息?)供我使用。我在我的本地机器上启动了一个 Kafka Connect 集群(进行测试),然后这个本地实例(我们将继续称之为)然后通过我连接到远程 Kafka 集群(我们称之为远程集群)输入引导服务器、一些回调处理程序类和一个 connect.jaas 文件。

远程集群上是否需要已经存在这三个主题?在这里,我一直在尝试在本地实例上的自己的代理上创建它们,但通过继续研究,我发现这三个内部主题可能需要在远程集群上(我从中获取数据)。远程Kafka集群的所有者是否需要为我创建这三个主题?他们将在哪里创建它们?如果他们的集群不是专门的 Kafka Connect 集群怎么办?

【问题讨论】:

【参考方案1】:

主题需要在 Connect worker 属性中bootstrap.servers 定义的集群上创建。这可以是本地的或远程的,具体取决于您实际希望连接器任务发送/接收的数据。单个连接任务不能覆盖正在使用的代理(例如,不能使用源连接器写入多个 Kafka 集群)

如果获得授权,最新版本的 Kafka Connect 将自动创建这些内部主题。否则,是的,它们需要使用 kafka-topics --create 创建并具有适当的分区计数和复制因子。

如果您的数据存在于远程 Kafka 集群中,则运行本地实例的唯一原因是您想使用 MirrorMaker。

如果他们的集群不是专门的 Kafka Connect 集群怎么办?

不清楚这是什么意思。 Kafka Connect 是一个客户端,就像 Kafka Streams 应用程序或普通的生产者或消费者一样。它本身不存储主题。

【讨论】:

以上是关于在分布式模式下使用 Kafka Connect,内部主题应该存在哪里的主要内容,如果未能解决你的问题,请参考以下文章

Kafka: Connect

在 Kafka Connect 分布式模式下为多个主题配置连接器

具有多个连接器和一个主题的分布式 Kafka Connect

Confluent Kafka Connect HDFS Sink 连接器延迟

Kafka Connect:没有为连接器创建任务

如何隐藏 Kafka connect api 未处理异常的堆栈跟踪