Kafka-Connect: Creating a new connector in distributed mode is creating new group

Refresh

December 2018

Views

2.6k time

3

I am currently working with confluent 3.0.1 platform. I am trying to create 2 connectors on two different workers but trying to create a new connector is creating a new group for it.

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"
    }
}

But both of them were created under different group id. After this i queried on the existing groups.

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

Result was:
connect-connector2
connect-connector1

These groups was created by Kafka connect automatically and was not given by me. I had given different group.id in worker.properties. But I wanted both connectors to be under same group so that they work parallel to share the messages.As of now I have 1 million data on a topic "dev.ps_primary_delivery" and I want both connector to get 0.5 million each.

Please let me know how to do this.

2 answers

0

Вы можете установить consumer.group.id как значение, которое Кафки Connect могут принимать и использовать его в качестве group.id для всего приложения

Преимущество: Вы получаете одну группу потребителей приложение подключается к Недостаток: вы должны быть осторожны в конфигурации группы потребителей. Сделать их все выглядят так же

10

Я думаю, что требуется некоторое уточнение ...

  1. group.idв worker.properties файл не относится к группам потребителей. Это «работник группы» - несколько рабочих в той же группе работников будет разделить работу между ними - так, если тот же разъем имеет много задач (например, соединитель JDBC имеет задачу для каждой таблицы), эти задачи будут выделены все рабочие группы.

  2. Раковина разъемы действительно есть потребители, которые являются частью группы потребителей. Group.id этой группы всегда «подключения -» + имя соединителя. В вашем случае, вы получили «Connect-connector1» и «Connect-connector2» на основе ваших имен разъемов. Это также означает, что единственный способ два разъема будут находиться в одной и той же группе ... если они имеют такое же имя. Но имена являются уникальными, так что вы не можете иметь два разъема в одной и той же группе. Причина в том, ...

  3. Разъемы на самом деле не получают сами события, они просто начинают кучу задач. Каждая из задач имеет потребителей, которые являются частью соединителя группы потребителей и каждая задача будет обрабатывать подмножество тем и разделов независимо друг от друга. Таким образом, наличие двух разъемов в одной и той же группе, в основном означает, что все их задачи являются частью одной и той же группы - так зачем вам два разъема? Просто настройте дополнительные темы и больше задач, для этого один разъема, и вы все готовы.

Единственное исключение, если разъем используется не использует задания правильно или ограничивает вас только одна задача. В этом случае - либо у них есть веские причины или (более вероятно) кому-то нужно, чтобы улучшить их соединитель ...