【问题标题】:multiple connectors in kafka to different topics are going to same nodekafka 中到不同主题的多个连接器将连接到同一个节点
【发布时间】:2018-12-26 21:32:12
【问题描述】:

我在 kafka-connect 中创建了两个 kafka 连接器,它们使用相同的连接器类,但它们听的主题不同。

当我在我的节点上启动进程时,两个连接器最终都会在此进程上创建任务。但是,我希望一个节点只处理一个连接器/主题。如何将主题/连接器限制为单个节点?我在 connect-distributed.properties 中看不到任何配置,其中进程可以指定要使用的连接器。

谢谢

【问题讨论】:

  • 我的模糊理解是您将它们设置为组和/或分区(我目前不确定区别,或者适用于 kafka-connect)docs.confluent.io/current/connect/…
  • 您是否尝试过独立模式或在两个节点的工作器配置中使用不同的 group.id?这将形成两个单独的连接集群并强制隔离您正在描述的可能显而易见的一点,即您现在有两个工作人员要分别管理。
  • 一个任务只是一个消费者线程。我不理解这个问题
  • 我在 connect-distributed.properties 中有单独的 group.id,但我不确定如何将此 group.id 与通过 rest api 创建的连接器相关联。 Kafka connect 将两个连接器都发送到同一个 group.id,因此另一个 group.id 没有收到任何任务。正如 Robin 提到的,我希望为每个主题在分布式模式下使用单独的 kafka 连接集群,但找不到任何示例或配置

标签: apache-kafka apache-kafka-connect


【解决方案1】:

分布式模式下的 Kafka Connect 可以作为一个或多个 worker 的集群运行。每个worker 可以运行多个task。根据您正在运行的 connectorsworkers 的数量,您将有 tasks 在同一个 worker 上运行。这是经过深思熟虑的——这个想法是 Kafka Connect 将为您管理您的任务和工作量,跨越可用的工作人员。

如果您想隔离您的处理,您可以在同一台机器上(确保使用不同的 REST 端口)或单独的机器上将 Kafka Connect 作为单独的 Connect 集群运行。

有关详细信息,请参阅 architectureconfig 了解配置单独集群的步骤。请注意,集群实际上可以是单个工作人员,但在发生故障时您没有任何冗余。

【讨论】:

  • 这正是我想要实现的。将两个主题隔离到两个不同的进程/连接器。但是,除了有单独的 group.id 和一些偏移、状态主题之外,看不到任何文档。组 ID 如何与连接器名称相关联?
  • 你是什么意思,“两个不同的进程/连接器的两个主题”?一个连接器可以写入多个主题(例如,JDBC 可以拉出多个表,每个表都转到自己的主题)。我认为您所追求的是:您只需将一个连接器部署到一个集群。每个集群都有自己的配置。
  • 可以在一台kafka服务器上创建多个kafka连接集群吗?这是如何配置的?
  • 请参阅here 了解配置。有关参考架构,请参阅 here。从逻辑上讲,这可以全部驻留在一个节点上。在实践中,您可能会为了性能和弹性而将其分开。
  • 即使我为连接器提供了 tasks.max=10,我也只看到为连接器创建了一个任务。为什么会这样。 (我的集群配置:2 个代理,1 个连接工作者)
猜你喜欢
  • 2020-10-10
  • 1970-01-01
  • 2018-08-03
  • 2020-09-06
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 2014-11-02
相关资源
最近更新 更多