Ошибка при создании темы Кафки: - коэффициент репликации больше доступных брокеров
Я пытаюсь создать тему 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