Kafka-Connect:在分布式模式下创建新连接器正在创建新组

时间:2017-01-18 12:56:54

标签: elasticsearch apache-kafka apache-kafka-connect confluent

我目前正在使用汇合3.0.1平台。我正在尝试在两个不同的工作人员上创建2个连接器,但尝试创建一个新连接器正在为它创建一个新组。

Two connectors were created using below details:

1) POST http://devmetric.com:8083/connectors

{
    "name": "connector1",
    "config": {
        "connector.class": "com.xxx.kafka.connect.sink.DeliverySinkConnector",
        "tasks.max": "1",
        "topics": "dev.ps_primary_delivery",
        "elasticsearch.cluster.name": "ad_metrics_store",
        "elasticsearch.hosts": "devkafka1.com:9300",
        "elasticsearch.bulk.size": "100",
        "tenants": "tenant1"
    }
}

2) POST http://devkafka01.com:8083/connectors

{
    "name": "connector2",
    "config": {
        "connector.class": "com.xxx.kafka.connect.sink.DeliverySinkConnector",
        "tasks.max": "1",
        "topics": "dev.ps_primary_delivery",
        "elasticsearch.cluster.name": "ad_metrics_store",
        "elasticsearch.hosts": "devkafka.com:9300",
        "elasticsearch.bulk.size": "100",
        "tenants": "tenant1"
    }
}

但他们都是在不同的群组ID下创建的。在此之后,我询问现有的团体。

$ sh ./bin/kafka-consumer-groups --bootstrap-server devmetric.com:9091  --new-consumer  --list

Result was:
connect-connector2
connect-connector1

这些群组是由Kafka自动创建的,而不是由我提供的。我在worker.properties中给了不同的group.id.但是我希望两个连接器都在同一组下,以便它们并行工作以共享消息。截至目前,我有一个主题的100万个数据" dev.ps_primary_delivery"我希望每个连接器都能获得50万个。

请让我知道如何做到这一点。

2 个答案:

答案 0 :(得分:12)

我认为需要澄清......

    worker.properties文件中的
  1. group.id不引用使用者组。它是一个"工人组织" - 同一工作组中的多个工作人员将在它们之间拆分工作 - 因此,如果同一连接器具有许多任务(例如,JDBC连接器具有每个表的任务),则这些任务将分配给该组中的所有工作人员。

  2. 接收器确实有消费者属于消费者群体。该组的group.id始终是" connect - " +连接器名称。在你的情况下,你有" connect-connector1"和" connect-connector2"根据您的连接器名称。这也意味着两个连接器在同一组中的唯一方式是......如果它们具有相同的名称。但名称是唯一的,因此您在同一组中不能有两个连接器。原因是......

  3. 连接器本身并不真正获取事件,它们只是启动了一系列任务。每个任务都有消费者,这些消费者是连接器使用者组的一部分,每个任务将独立处理主题和分区的子集。因此在同一组中有两个连接器,基本上意味着它们的所有任务都属于同一组 - 那么为什么需要两个连接器呢?只需为该一个连接器配置更多主题和更多任务,即可完成设置。

  4. 唯一的例外是,如果您使用的连接器没有正确使用任务或仅限于一项任务。在这种情况下 - 要么他们有充分的理由,要么(更有可能)有人需要改进他们的连接器......

答案 1 :(得分:0)

您可以将Consumer.group.id设置为Kafka Connect可以使用的值,并将其用作整个应用程序的group.id。

优势:您的应用程序连接到一个消费者组 劣势:您应该谨慎使用Consumer Group配置。让它们看起来都一样