Ошибка при создании тем Kafka - коэффициент репликации больше доступных брокеров
Я пытаюсь создать темы в Kafka, следуя руководству на веб-сайте Apache Kafka через командную строку.
Выполняя команду:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Я получаю ошибку следующим образом:
Error while executing topic command replication factor: 1 larger than available
brokers: 0
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:171)
at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:93)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:55)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
[2015-10-13 14:25:38,607] INFO Processed session termination for sessionid: 0x15
06056566d0004 (org.apache.zookeeper.server.PrepRequestProcessor)
[2015-10-13 14:25:38,608] INFO Closed socket connection for client /127.0.0.1:33
391 which had sessionid 0x1506056566d0004 (org.apache.zookeeper.server.NIOServer
Cnxn)
Как я могу решить проблему? Любая хорошая документация, чтобы начать с этого?
Спасибо!!
Ответы
Ответ 1
Кажется, что ваш сервер не запущен, проверьте журналы для выпуска
Процесс убийства
sudo fuser -k 2181/tcp
запустить zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
Запуск Kafka
bin/kafka-server-start.sh config/server.properties '
Ответ 2
Если бы я был вами, я бы попробовал этот код:
bin/kafka-topics.sh --create --zookeeper localhost: 2181/kafka - коэффициент повторения 1 - части 1 - топический тест
Если вы используете кластер, где zookeeper будет распределен в 3 узлах, вы должны подставить localhost:2181/kafka
для direccion1:2181,direction2:2181,direction3:2181/kafka
Ответ 3
В нем четко сказано, что 0 брокер доступен. Запуск брокера
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
в учебнике Apache Kafka, затем попробуйте
Ответ 4
У меня была та же проблема. Я решаю проблему. Я думаю, причина в том, что нет фонового запуска.
поэтому мы начинаем фон запуска
bin/kafka-server-start.sh config/server.properties &
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test &
Ответ 5
Ваш Zookeeper не может видеть каких-либо брокеров Kafka. Войдите в свою консоль Zookeepr: bin/zkCli.sh -server localhost:2181
Запустите [zk: localhost:2181(CONNECTED) 2] ls /brokers/ids
на консоли. Не должно быть никаких брокеров. Вам необходимо перезапустить все ваши брокеров Kafka и проверить журнал процесса kafka. Иногда даже в том случае, когда процесс отображается как выполняемый (ps -ef | grep kafka
), он может вообще не запускаться полностью, из-за чего Zookeeper не может его увидеть. У меня была такая же проблема с дистрибутивом Apache Kafka 0.11.0.
Ответ 6
У меня была та же проблема, но в конце концов я попробовал следующие шаги, которые помогли мне:
1) Создайте chroot в Zookeeper с помощью следующих команд:
zkCli.sh -server localhost: 2181
создать/kafka1 []
2) Для конфигурации брокеров kafka измените zookeeper.connect и добавьте путь к chroot: например,
В server.properties:
zookeeper.connect = localhost: 2181/kafka1
3) Запустить Zookeeper
4) Запустить Kafka Server
5) Создать тему, как показано ниже: Bin/kafka-topic.sh --create -zookeeper локальный: 2181/kafka1 --replication-фактора 1 --partitions 1 --topic данные
6) Подтвердите созданную тему: bin/kafka-topics.sh --list --zookeeper localhost: 2181/kafka1
Я следовал ниже для справки: https://community.hortonworks.com/questions/102132/run-multiple-broker-versions-in-the-same-cluster.html
Ответ 7
Тот же сценарий, с которым я столкнулся после удаления единственной темы, которую я создал.
Путь к его решению был сделан Kafka и Zookeeper, обновлены настройки Kafka (файл server.properties), где я добавляю следующую настройку
delete.topic.enable=true
сохраненный файл, повернуть Zookeeper и Kafka вверх, и все работает как обычно.
Ответ 8
убедитесь, что сервер kafka запущен правильно. Если вы используете параметр -dameon
чтобы запустить kafka server в качестве демона. Попробуйте удалить его и посмотреть, есть ли какие-либо ошибки во время запуска.
Проблема, с которой я столкнулся, оказалась проблемой доступа к файлу, в которой пользователь запускает kafka, не имеет доступа к директории журнала, которую я настроил. После того, как я предоставил доступ, он просто работает!
Ответ 9
Попробуйте добавить в свой сервер:
delete.topic.enable=true
Ответ 10
Скорее всего, на вашем сервере есть оставшийся, беглый zookeeper из одного из предыдущих развертываний. Перечислите контейнеры, контейнеры, процессы и т.д. И проверьте их возраст/время начала, чтобы определить это.
Ответ 11
В моем случае ошибка была вызвана тем, что я начал создавать темы до того, как zookeeper стал доступен. Так как я все делал в сценарии, помогло введение некоторой задержки перед созданием тем. Если ваш клиентский порт zookeeper - 2181
, вы можете проверить доступность ваших брокеров:
echo dump | nc zookeeper 2181 | grep brokers
Ответ 12
В моем случае config/server.properties
:
zookeeper.connect=localhost:2181
Но я создаю тему так:
$ ./bin/kafka-topics.sh --create --zookeeper localhost:2181/kafka --replication-factor 1 --partitions 1 --topic test
Тогда у меня была эта проблема.
Я решаю эту проблему, исправив команду создания темы, как показано ниже:
$ ./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Вы должны убедиться, что опция --zookeeper
такая же, как zookeeper.connect
в config/server.properties
Ответ 13
Проверьте, все ли брокеры зарегистрированы в Zookeeper:
zookeeper-shell.sh localhost:2181 ls /brokers/ids
Скорее всего, некоторые скобки отсутствуют в скобках []
Войдите в систему, на которой находится этот идентификатор, и перезапустите посредник:
kafka-server-stop.sh
nohup kafka-server-start.sh ../config/server.properties > /dev/null 2>&1 &
- Проверьте еще раз, может ли Zookeeper теперь правильно видеть всех ваших брокеров.
- Повторите команду создания темы.
Надеюсь, это поможет.
Ответ 14
У меня была та же проблема. Вы должны следовать этой части руководства:
http://kafka.apache.org/documentation.html#quickstart_multibroker
У меня не было никакого брокера. Создайте 2 новых брокера, и вы устраните проблему. Выполните следующие действия:
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
После создания этих файлов вы должны настроить его с помощью этих изменений:
В "server-1.properties":
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
host.name=localhost
(Номер порта должен быть номером порта, который у вас есть на сервере server.properties + 1. У меня было 9092, поэтому мне нужно написать 9093)
В "server-2.properties":
broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2
host.name=localhost
(Номер порта должен быть рядом с сервером-1. В моем случае 9094)