代码之家  ›  专栏  ›  技术社区  ›  Renukaradhya

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

  •  6
  • Renukaradhya  · 技术社区  · 8 年前

    我目前正在使用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 connect自动创建的,不是由我提供的。我提供了不同的组。worker.properties中的id。但我希望两个连接器都在同一组下,以便它们并行工作以共享消息。到目前为止,我有100万个关于“dev.ps_primary_delivery”主题的数据,我希望两个连接器都能获得50万个数据。

    请让我知道怎么做。

    2 回复  |  直到 4 年前
        1
  •  25
  •   Gwen Shapira    8 年前

    我认为需要一些澄清。。。

    1. group.id 在工人中。属性文件未引用消费者组。它是一个“工作组”-同一工作组中的多个工作人员将在他们之间分配工作-因此,如果同一连接器有许多任务(例如,JDBC连接器对每个表都有一个任务),那么这些任务将分配给组中的所有工作人员。

    2. 接收器连接器确实有属于用户组的用户。小组。此组的id始终为“连接-”+连接器名称。在您的示例中,根据您的连接器名称,您得到了“connect-connector1”和“connect-connector2”。这也意味着两个连接器位于同一组中的唯一方式是…如果它们具有相同的名称。但名称是唯一的,因此不能在同一组中有两个连接器。原因是。。。

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

    唯一的例外是,如果您使用的连接器未正确使用任务,或者将您限制为仅执行一个任务。在这种情况下-要么他们有很好的理由,要么(更有可能)有人需要改进他们的连接器。。。

        2
  •  0
  •   Sriram    6 年前

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

    优势:您的应用程序连接到一个消费者组 缺点:在消费者组配置上应小心。让他们看起来都一样