windows下zookeeper和kafka的启动和关闭顺序及注意事项

本文详细介绍了Kafka、ZooKeeper、Redis的启动和关闭步骤,强调了启动顺序的重要性。在Kafka中创建topic和消费生产队列的操作也进行了展示。遇到的问题包括启动失败时的ZooKeeper连接超时错误,以及解决方案。成功启动Kafka后,日志显示服务器已开始接受连接。此外,提到了Zookeeper启动时可能出现的NoNode错误,这些通常是正常操作的一部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动示例:

#启动mysql:一般是自启动

#启动redis:貌似不用手动启动

#启动zookeeper和kafka(先后顺序)

cd D:\kafka\kafka_2.12-2.3.0
bin\windows\zookeeper-server-start.bat config\zookeeper.properties

cd D:\kafka\kafka_2.12-2.3.0
bin\windows\kafka-server-start.bat config\server.properties

#关闭kafka和zookeeper(先后顺序)

cd D:\kafka\kafka_2.12-2.3.0\bin\windows		
kafka-server-stop.bat
zookeeper-server-stop.bat

如果是第一次使用需要(在启动zookeeper和kafka后)创建kafka的topic,以及创建生产者、消费者队列:

#创建test这个topic并查看
cd D:\kafka\kafka_2.12-2.3.0
bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
bin\windows\kafka-topics.bat --list --bootstrap-server localhost:9092


cd D:\kafka\kafka_2.12-2.3.0\bin\windows   	//这个文件夹下有各种.bat
创建生产者,发消息
kafka-console-producer.bat --broker-list localhost:9092 --topic test
创建消费者,读取消息
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

首先:一定要先启动ZooKeeper 再启动Kafka 顺序不可以改变。
先关闭kafka ,再关闭zookeeper。

启动ZooKeeper后不要暴力关闭命令行,否则接下来启动kafka时会连接不上,显示Timeout错误

两个都不能暴力关闭

kafka关闭时:
现象:在windows的命令行里启动kafka之后,当关闭命令行窗口时,就会强制关闭kafka。这种关闭方式为暴力关闭,很可能会导致kafka无法完成对日志文件的解锁。届时,再次启动kafka的时候,就会提示日志文件被锁,无法成功启动。
方案:将kafka的日志文件全部删除,再次启动即可。
建议:不要暴力关闭kafka,建议通过在命令行执行kafka-server-stop命令来关闭它。
其他:将来在Linux上部署kafka之后,采用后台运行的方式,就会避免这样的问题。

启动失败:

[2022-05-04 08:28:34,013] INFO [ZooKeeperClient Kafka server] Waiting until connected. (kafka.zookeeper.ZooKeeperClient)
[2022-05-04 08:28:34,017] INFO Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
[2022-05-04 08:28:34,021] INFO Socket connection established to localhost/127.0.0.1:2181, initiating session (org.apache.zookeeper.ClientCnxn)
[2022-05-04 08:28:40,025] WARN Client session timed out, have not heard from server in 6005ms for sessionid 0x0 (org.apache.zookeeper.ClientCnxn)
[2022-05-04 08:28:40,026] INFO Client session timed out, have not heard from server in 6005ms for sessionid 0x0, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
[2022-05-04 08:28:40,026] INFO [ZooKeeperClient Kafka server] Closing. (kafka.zookeeper.ZooKeeperClient)
[2022-05-04 08:28:40,140] INFO Session: 0x0 closed (org.apache.zookeeper.ZooKeeper)
[2022-05-04 08:28:40,144] INFO EventThread shut down for session: 0x0 (org.apache.zookeeper.ClientCnxn)
[2022-05-04 08:28:40,146] INFO [ZooKeeperClient Kafka server] Closed. (kafka.zookeeper.ZooKeeperClient)
[2022-05-04 08:28:40,155] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
        at kafka.zookeeper.ZooKeeperClient.$anonfun$waitUntilConnected$3(ZooKeeperClient.scala:258)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
        at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:253)
        at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:254)
        at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:112)
        at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1826)
        at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:364)
        at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:387)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:207)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
        at kafka.Kafka$.main(Kafka.scala:84)
        at kafka.Kafka.main(Kafka.scala)
[2022-05-04 08:28:40,162] INFO shutting down (kafka.server.KafkaServer)
[2022-05-04 08:28:40,175] INFO shut down completed (kafka.server.KafkaServer)
[2022-05-04 08:28:40,177] ERROR Exiting Kafka. (kafka.server.KafkaServerStartable)
[2022-05-04 08:28:40,198] INFO shutting down (kafka.server.KafkaServer)

成功启动:

[2022-05-03 22:20:39,636] INFO [ThrottledChannelReaper-Fetch]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-03 22:20:39,636] INFO [ThrottledChannelReaper-Produce]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-03 22:20:39,639] INFO [ThrottledChannelReaper-Request]: Starting (kafka.server.ClientQuotaManager$ThrottledChannelReaper)
[2022-05-03 22:20:39,687] INFO Log directory d:\work\data\kafka-logs not found, creating it. (kafka.log.LogManager)
[2022-05-03 22:20:39,714] INFO Loading logs. (kafka.log.LogManager)
[2022-05-03 22:20:39,732] INFO Logs loading complete in 18 ms. (kafka.log.LogManager)
[2022-05-03 22:20:39,748] INFO Starting log cleanup with a period of 300000 ms. (kafka.log.LogManager)
[2022-05-03 22:20:39,767] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
log4j:ERROR Failed to rename [D:\kafka\kafka_2.12-2.3.0/logs/log-cleaner.log] to [D:\kafka\kafka_2.12-2.3.0/logs/log-cleaner.log.2022-05-03-21].
[2022-05-03 22:20:40,356] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2022-05-03 22:20:40,403] INFO [SocketServer brokerId=0] Created data-plane acceptor and processors for endpoint : EndPoint(null,9092,ListenerName(PLAINTEXT),PLAINTEXT) (kafka.network.SocketServer)
[2022-05-03 22:20:40,406] INFO [SocketServer brokerId=0] Started 1 acceptor threads for data-plane (kafka.network.SocketServer)
[2022-05-03 22:20:40,447] INFO [ExpirationReaper-0-Produce]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,447] INFO [ExpirationReaper-0-Fetch]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,447] INFO [ExpirationReaper-0-DeleteRecords]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,452] INFO [ExpirationReaper-0-ElectPreferredLeader]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,486] INFO [LogDirFailureHandler]: Starting (kafka.server.ReplicaManager$LogDirFailureHandler)
[2022-05-03 22:20:40,529] INFO Creating /brokers/ids/0 (is it secure? false) (kafka.zk.KafkaZkClient)
[2022-05-03 22:20:40,561] INFO Stat of the created znode at /brokers/ids/0 is: 24,24,1651587640550,1651587640550,1,0,0,72060518031163392,200,0,24
 (kafka.zk.KafkaZkClient)
[2022-05-03 22:20:40,562] INFO Registered broker 0 at path /brokers/ids/0 with addresses: ArrayBuffer(EndPoint(LAPTOP-5S4ELDN5,9092,ListenerName(PLAINTEXT),PLAINTEXT)), czxid (broker epoch): 24 (kafka.zk.KafkaZkClient)
[2022-05-03 22:20:40,566] WARN No meta.properties file under dir d:\work\data\kafka-logs\meta.properties (kafka.server.BrokerMetadataCheckpoint)
[2022-05-03 22:20:40,642] INFO [ExpirationReaper-0-topic]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,642] INFO [ExpirationReaper-0-Heartbeat]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,642] INFO [ExpirationReaper-0-Rebalance]: Starting (kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper)
[2022-05-03 22:20:40,670] INFO Successfully created /controller_epoch with initial epoch 0 (kafka.zk.KafkaZkClient)
[2022-05-03 22:20:40,687] INFO [GroupCoordinator 0]: Starting up. (kafka.coordinator.group.GroupCoordinator)
[2022-05-03 22:20:40,689] INFO [GroupCoordinator 0]: Startup complete. (kafka.coordinator.group.GroupCoordinator)
[2022-05-03 22:20:40,696] INFO [GroupMetadataManager brokerId=0] Removed 0 expired offsets in 7 milliseconds. (kafka.coordinator.group.GroupMetadataManager)
[2022-05-03 22:20:40,716] INFO [ProducerId Manager 0]: Acquired new producerId block (brokerId:0,blockStartProducerId:0,blockEndProducerId:999) by writing to Zk with path version 1 (kafka.coordinator.transaction.ProducerIdManager)
[2022-05-03 22:20:40,756] INFO [TransactionCoordinator id=0] Starting up. (kafka.coordinator.transaction.TransactionCoordinator)
[2022-05-03 22:20:40,759] INFO [TransactionCoordinator id=0] Startup complete. (kafka.coordinator.transaction.TransactionCoordinator)
[2022-05-03 22:20:40,759] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.coordinator.transaction.TransactionMarkerChannelManager)
[2022-05-03 22:20:40,829] INFO [/config/changes-event-process-thread]: Starting (kafka.common.ZkNodeChangeNotificationListener$ChangeEventProcessThread)
[2022-05-03 22:20:40,841] INFO [SocketServer brokerId=0] Started data-plane processors for 1 acceptors (kafka.network.SocketServer)
[2022-05-03 22:20:40,855] INFO Kafka version: 2.3.0 (org.apache.kafka.common.utils.AppInfoParser)
[2022-05-03 22:20:40,856] INFO Kafka commitId: fc1aaa116b661c8a (org.apache.kafka.common.utils.AppInfoParser)
[2022-05-03 22:20:40,857] INFO Kafka startTimeMs: 1651587640843 (org.apache.kafka.common.utils.AppInfoParser)
[2022-05-03 22:20:40,865] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)

有时候kafka启动成功后,zookeeper会出现如下信息ERROR

这不是一个报错故障,只是一个user-level KeeperException。可以忽略不做处理的
kafka安装好后,第一次启动。zookeeper日志Error:KeeperErrorCode = NoNode for /config/topics/test,是因为kafka请求访问这个路径,但是这个路径还不存在,zookeeper就抛了这个error。kafka会创建这个topic,然后访问zookeeper里topic对应的路径,zookeeper日志抛出error NodeExists for /config/topics(kafka已经把topic创建好了),路径已经存在了。
综上所述,这些error是正常的日志信息,可以忽略。

[2022-05-04 08:46:42,340] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2022-05-04 08:47:07,313] INFO Accepted socket connection from /127.0.0.1:4333 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2022-05-04 08:47:07,328] INFO Client attempting to establish new session at /127.0.0.1:4333 (org.apache.zookeeper.server.ZooKeeperServer)
[2022-05-04 08:47:07,333] INFO Creating new log file: log.1 (org.apache.zookeeper.server.persistence.FileTxnLog)
[2022-05-04 08:47:07,353] INFO Established session 0x1000036e0580000 with negotiated timeout 6000 for client /127.0.0.1:4333 (org.apache.zookeeper.server.ZooKeeperServer)
[2022-05-04 08:47:07,503] INFO Got user-level KeeperException when processing sessionid:0x1000036e0580000 type:create cxid:0x2 zxid:0x3 txntype:-1 reqpath:n/a Error Path:/brokers Error:KeeperErrorCode = NoNode for /brokers (org.apache.zookeeper.server.PrepRequestProcessor)
[2022-05-04 08:47:07,519] INFO Got user-level KeeperException when processing sessionid:0x1000036e0580000 type:create cxid:0x6 zxid:0x7 txntype:-1 reqpath:n/a Error Path:/config Error:KeeperErrorCode = NoNode for /config (org.apache.zookeeper.server.PrepRequestProcessor)
[2022-05-04 08:47:07,529] INFO Got user-level KeeperException when processing sessionid:0x1000036e0580000 type:create cxid:0x9 zxid:0xa txntype:-1 reqpath:n/a Error Path:/admin Error:KeeperErrorCode = NoNode for /admin (org.apache.zookeeper.server.PrepRequestProcessor)
[2022-05-04 08:47:07,980] INFO Got user-level KeeperException when processing sessionid:0x1000036e0580000 type:create cxid:0x15 zxid:0x15 txntype:-1 reqpath:n/a Error Path:/cluster Error:KeeperErrorCode = NoNode for /cluster (org.apache.zookeeper.server.PrepRequestProcessor)
[2022-05-04 08:47:09,567] INFO Got user-level KeeperException when processing sessionid:0x1000036e0580000 type:multi cxid:0x38 zxid:0x1c txntype:-1 reqpath:n/a aborting remaining multi ops. Error Path:/admin/preferred_replica_election Error:KeeperErrorCode = NoNode for /admin/preferred_replica_election (org.apache.zookeeper.server.PrepRequestProcessor)

执行命令kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test出现timeout错误
把日志文件全部删除后重新启动解决

<think>好的,我现在需要回答用户关于KafkaZooKeeper启动顺序的问题。首先,我得确认用户的问题是什么,他们想知道启动这两个服务的正确顺序。根据用户提供的引用内容,已经有几个引用提到了启动顺序,特别是引用[1]、[2]、[4]明确指出要先启动ZooKeeper启动Kafka关闭则相反。 接下来,我需要整理这些信息,确保回答的结构清晰。可能需要分点说明启动关闭的步骤,同提到相关的配置注意事项,比如引用[3]提到的ZooKeeper配置修改,以及引用[5]中提到的myid文件检查。另外,引用[4]还提到了使用KRaft模式启动Kafka的情况,需要说明两种不同的启动方式。 然后,要注意用户提供的引用中有关于使用内置ZooKeeperKRaft的情况,所以在回答需要区分传统依赖ZooKeeper的情况新的KRaft模式。传统模式下必须按照顺序,而KRaft模式不需要ZooKeeper,这部分需要明确说明,避免混淆。 还要检查是否有其他需要注意的细节,比如关闭顺序的重要性,以及配置错误的后果,比如数据目录设置不正确可能导致的问题。同,用户可能遇到的问题,比如启动失败的原因,可以包含在相关问题中,帮助用户进一步了解。 最后,生成的相关问题需要覆盖启动顺序的原理、常见错误、配置影响、关闭顺序的重要性以及KRaft模式的区别。这些问题应该能帮助用户更深入地理解主题,并解决可能遇到的疑惑。 现在需要确保回答符合系统级指令,使用正确的中文表达,正确引用标注,并且LaTeX格式无误。同,生成的回答要结构清晰,步骤分明,让用户容易理解操作。</think>### KafkaZooKeeper启动顺序 #### 1. 传统模式(依赖ZooKeeper) 当Kafka使用**ZooKeeper**作为分布式协调服务,必须遵循以下顺序: - **启动顺序**:先启动ZooKeeper,再启动KafkaZooKeeper负责管理Kafka的元数据(如Broker注册、Topic配置等)。若未先启动ZooKeeperKafka将无法正常初始化[^1][^2][^4]。 - **关闭顺序**:先关闭Kafka,再关闭ZooKeeper。 避免因Kafka未完全终止而导致ZooKeeper残留无效数据[^2]。 **示例操作命令**: ```bash # 启动ZooKeeper(后台运行) bin/zookeeper-server-start.sh -daemon config/zookeeper.properties # 启动Kafka(后台运行) bin/kafka-server-start.sh -daemon config/server.properties # 关闭Kafka bin/kafka-server-stop.sh # 关闭ZooKeeper bin/zookeeper-server-stop.sh ``` #### 2. KRaft模式(无需ZooKeeper) 从Kafka 3.0开始,支持使用**KRaft协议**(基于Raft共识算法)替代ZooKeeper。此**无需启动ZooKeeper**,直接通过KRaft启动Kafka集群。 **示例操作步骤**: ```bash # 生成集群UUID KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)" # 格式化存储目录 bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties # 启动Kafka(后台运行) bin/kafka-server-start.sh -daemon config/kraft/server.properties ``` #### 3. 关键配置注意事项 - **ZooKeeper数据目录**:若使用自带的ZooKeeper,需确保`dataDir`配置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wow_awsl_qwq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值