我昨天成功地成立了zookeeper和一名kafka经纪人 . 一切都按预期工作 . 我关闭了kafka(ctrl c)然后关闭了zookeeper .
今天我开始使用zookeeper,当我开始使用kafka( bin/kafka-server-start.sh config/server0.properties
)时,我收到以下错误 . 我尝试了各种补救措施(完全删除我的kafka安装并从头开始再做) . 我仍然得到同样的错误 .
[2016-09-28 16:15:55,895] FATAL Fatal error during KafkaServerStartable startup. Prepare to shutdown (kafka.server.KafkaServerStartable)
java.lang.RuntimeException: A broker is already registered on the path /brokers/ids/0. This probably indicates that you either have configured a brokerid that is already in use, or else you have shutdown this broker and restarted it faster than the zookeeper timeout so it appears to be re-registering.
at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:305)
at kafka.utils.ZkUtils.registerBrokerInZk(ZkUtils.scala:291)
at kafka.server.KafkaHealthcheck.register(KafkaHealthcheck.scala:70)
at kafka.server.KafkaHealthcheck.startup(KafkaHealthcheck.scala:51)
at kafka.server.KafkaServer.startup(KafkaServer.scala:244)
at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:37)
at kafka.Kafka$.main(Kafka.scala:67)
at kafka.Kafka.main(Kafka.scala)
[2016-09-28 16:15:55,896] INFO [Kafka Server 0], shutting down (kafka.server.KafkaServer)
全部在mac中设置
7 回答
我遇到了同样的问题,有两种方法可以解决它
[推荐]您需要清理zookeeper路径/ brokers / ids / []中的代理ID . 使用zk-cli tool delete命令清除路径 . 启动您的代理并验证它是否向协调员注册 .
解决此问题的另一种方法是从kafka服务器配置更改您的broker-id并重新启动代理 . 但是,这会破坏您的分区,不建议使用数据
我在AWS服务器中发现了类似的问题 . 问题是zookeeper正在运行 . 所以我先杀了这个过程,然后再次尝试,它起作用了 .
$ ps aux | grep zookeeper $kill -9 <zookeeper.properties process>
我在设置kafka和zookeeper多节点集群时遇到了同样的问题 . 问题的原因是:由于zookeeper ensemble需要一些时间来设置所以当我们启动kafka代理时,所有zookeeper节点可能还没有加入整体 . 因此可能是一个kafka节点连接到一个尚未进入整体的zookeeper . 另一个原因可能是kafka经纪人被杀而不是停止 . 当你杀死你的kafka进程或它崩溃时,它并没有正确关闭它的zookeeper连接
要避免这种情况,请确保在启动kafka代理之前,您的zookeeper集合已启动并正在运行 . 在zookeeper和kafka代理服务之间添加适当的等待启动和停止 .
通过检查默认的prot
9092
是否已被使用,确保kafka服务器正确关闭 . 终止9092
上的进程,然后重新启动kafka服务器 .如果不起作用,可能是现有的kafka服务器(代理ID为0)已在使用中 . 尝试在"server0.properties"中将
broker.id
更改为1而不是0(顺便说一句,为什么它被称为server0,你在这里更改了任何配置吗?默认情况下,它应该是server.properties),以下方法对我有用 .
将代理ID更改为其他值 . 默认情况下它是
0
. 将其更改为1
并再次测试 .我在包含zookeeper和kafka的docker容器中遇到了类似的问题(将两个服务放在一个容器中并不是最好的做法,但它是用于测试目的) .
这是错误
我的Quickfix是几秒钟后启动kafka-server;
您只需执行 zookeeper-server-stop.[sh|bat] 脚本 .