Ошибка при создании темы Кафки: - коэффициент репликации больше доступных брокеров

Я пытаюсь создать тему kafka через AdminCommand, используя ниже код Источник

 ZkClient zkClient = new ZkClient(kafkaHost, 10000, 10000, ZKStringSerializer$.MODULE$);
    AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

Но получение приведенного ниже исключения

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155)

Однако я могу создать тему с помощью команды оболочки.

Ответ 1

В вашем коде

 AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

Четвертый аргумент - это коэффициент репликации. Поэтому вы пытаетесь создать тему с именем pa_reliancepoc_telecom_usageevent с разделом count of 10 и replication of 2. Поэтому two kafka brokers должен быть доступен при создании темы. Если доступно меньше двух, вы получите следующее исключение.

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155)

Убедитесь, что вы используете kafka cluster with two broker nodes, а два узла should be alive while creating the topic.

Для запуска kafka в кластере обратитесь к шагу 6 в этой ссылке

Ответ 2

настройте локальную машину для запуска и запуска нескольких брокеров, если вы решите сохранить replication_factor > 1.

Вы можете сделать это, просто имея несколько копий server.properties. например,
server-1.properties и server-2.properties

Затем вам нужно указать разные broker.id и port в каждом из этих файлов, чтобы сделать их уникальными..

   config/server-1.properties:
     broker.id=1
     port=9093
     log.dir=/tmp/kafka-logs-1

   config/server-2.properties:
     broker.id=2
     port=9094
     log.dir=/tmp/kafka-logs-2

И затем запустите несколько экземпляров со следующими командами

> bin/kafka-server-start.sh config/server-1.properties &
> bin/kafka-server-start.sh config/server-2.properties &

Подробнее... Шаг 6: Настройка кластера с несколькими брокерами

Ответ 3

Я столкнулся с такой же проблемой при настройке нескольких брокеров.

Не удалось выполнить следующий шаг:

При редактировании файла конфигурации:   Config/server-1.properties:       broker.id = 1       слушатели = PLAINTEXT://: 9093       log.dir =/TMP/Кафка-журналы-1

необходимо обновить раздел LOG BASICS (см. ниже):

####################### Логические основы

Список каталогов, разделенных запятыми, для хранения файлов журналов

log.dirs=/tmp/kafka-logs-1