启动kafka broker

时间:2016-09-28 23:19:34

标签: apache-kafka apache-zookeeper

昨天我成功建立了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中设置

11 个答案:

答案 0 :(得分:4)

我在设置kafka和zookeeper多节点集群时遇到了同样的问题。 问题的原因是: 由于zookeeper ensemble需要一些时间来设置所以当我们启动kafka经纪人时,所有zookeeper节点可能还没有加入整体。 因此可能是一个kafka节点连接到一个尚未进入整体的zookeeper。 另一个原因可能是kafka经纪人被杀而不是停止。 当你杀死你的kafka进程或它崩溃时,它没有正确关闭它的zookeeper连接

要避免这种情况,请确保在启动kafka代理之前您的zookeeper集合已启动并正在运行。在zookeeper和kafka代理服务之间添加适当的等待启动和停止。

答案 1 :(得分:4)

/tmp目录下,以下目录已被删除:

  • kafka-log目录
  • Zookeeper-log目录

然后,我重新启动了kafka服务。

有效!

答案 2 :(得分:3)

@ShubhWIP 的回答是正确的,但缺少重要信息。

<块引用>

在 zookeeper 和 kafka 代理服务启动和停止之间添加适当的等待。

在zookeeper和kafka之间引入20秒的延迟。 zookeeper 的会话过期时间为 18000 毫秒。需要这个时间来声明旧会话已死。如果 Kafka 代理在此发生之前启动,则代理将关闭,并显示“在 /broker/ids/id 处创建临时文件时出错,节点已存在”。 >

答案 3 :(得分:1)

我遇到了同样的问题,有两种方法可以解决这个问题

  1. [推荐]您需要清理zookeeper路径/ brokers / ids / []中的代理ID。使用zk-cli tool delete命令清除路径。启动您的经纪人并验证它是否已向协调员注册。
  2. 解决此问题的另一种方法是从kafka服务器配置更改您的broker-id并重新启动代理。但是,这会破坏您的分区并且不建议使用数据

答案 4 :(得分:1)

我在AWS服务器中发现了类似的问题。问题是zookeeper正在运行。所以我先杀了这个过程,然后再次尝试,它起作用了。 $ ps aux | grep zookeeper $kill -9 <zookeeper.properties process>

答案 5 :(得分:0)

通过检查默认的prot 9092是否已被使用,确保kafka服务器正确关闭。终止9092上的进程,然后重新启动kafka服务器。

如果不起作用,可能是现有的kafka服务器(代理ID为0)已在使用中。 尝试在&#34; server0.properties&#34;中将broker.id更改为1而不是0 (顺便说一句,为什么它被称为server0,你在这里更改了任何配置吗?默认情况下,它应该是server.properties),

答案 6 :(得分:0)

以下方法对我有用。

将代理ID更改为其他值。默认情况下为0。将其更改为1并再次测试。

答案 7 :(得分:0)

在包含zookeeper和kafka的docker容器中,我遇到了类似的问题(最好的做法是将两个服务放在一个容器中,但这只是出于测试目的)。

这是错误

[2018-11-21 12:54:24,434] INFO [ThrottledChannelReaper-Fetch]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2018-11-21 12:54:24,434] INFO [ThrottledChannelReaper-Produce]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2018-11-21 12:54:24,435] INFO [ThrottledChannelReaper-Request]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2018-11-21 12:54:24,453] INFO Loading logs. (kafka.log.LogManager)
[2018-11-21 12:54:24,457] INFO Logs loading complete in 4 ms. (kafka.log.LogManager)
[2018-11-21 12:54:24,468] INFO Starting log cleanup with a period of 300000 ms. (kafka.log.LogManager)
[2018-11-21 12:54:24,469] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2018-11-21 12:54:24,694] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2018-11-21 12:54:24,728] INFO [SocketServer brokerId=0] Started 1 acceptor threads (kafka.network.SocketServer)
[2018-11-21 12:54:24,741] INFO [ExpirationReaper-0-Produce]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2018-11-21 12:54:24,741] INFO [ExpirationReaper-0-DeleteRecords]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2018-11-21 12:54:24,741] INFO [ExpirationReaper-0-Fetch]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2018-11-21 12:54:24,750] INFO [LogDirFailureHandler]: Starting (kafka.server.ReplicaManager$LogDirFailureHandler)
[2018-11-21 12:54:24,790] INFO Creating /brokers/ids/0 (is it secure? false) (kafka.zk.KafkaZkClient)
[2018-11-21 12:54:24,802] ERROR Error while creating ephemeral at /brokers/ids/0, node already exists and owner '72057672936325120' does not match current session '72057674644258816' (kafka.zk.KafkaZkClient$CheckedEphemeral)
[2018-11-21 12:54:24,803] INFO Result of znode creation at /brokers/ids/0 is: NODEEXISTS (kafka.zk.KafkaZkClient)
[2018-11-21 12:54:24,808] ERROR [KafkaServer id=0] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.apache.zookeeper.KeeperException$NodeExistsException: KeeperErrorCode = NodeExists
    at org.apache.zookeeper.KeeperException.create(KeeperException.java:122)
    at kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1525)
    at kafka.zk.KafkaZkClient.registerBrokerInZk(KafkaZkClient.scala:84)
    at kafka.server.KafkaServer.startup(KafkaServer.scala:257)
    at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
    at kafka.Kafka$.main(Kafka.scala:75)
    at kafka.Kafka.main(Kafka.scala)

对我来说,Quickfix是在几秒钟后启动kafka-server;

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties && (bin/kafka-server-start.sh config/server.properties || echo "kafka start failed. restarting ... " && sleep 3 && bin/kafka-server-start.sh config/server.properties)

答案 8 :(得分:0)

我在生产环境中遇到此问题,无法简单地更改Kafka经纪人ID。在对所有Zookeeper实例执行滚动重启之后,我能够成功地重启Kafka代理。如果您针对单个Zookeeper实例运行,那么重新启动单个Zookeeper实例就足够了。

答案 9 :(得分:0)

当使用docker-compose up运行多个容器并使用ctrl-C结束进程时,我遇到了。使用docker-compose down对其进行了修复。

答案 10 :(得分:-7)

您只需执行 zookeeper-server-stop.[sh|bat] 脚本。