在分布式模式下使用 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