kafka启动报错

本文档详细记录了启动Kafka过程中遇到的问题,包括配置文件中的监听地址错误、启动命令位置不当、创建topic时访问地址错误,以及消费报错的情况,并提供了相应的解决办法,强调在监听、创建topic和消费时,IP地址需要保持一致。

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


问题1

启动kafka时报错

[2022-03-09 00:07:17,280] ERROR [KafkaServer id=1] Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
org.apache.kafka.common.KafkaException: Socket server failed to bind to a:9092: 无法指定被请求的地址.
        at kafka.network.Acceptor.openServerSocket(SocketServer.scala:450)
        at kafka.network.Acceptor.<init>(SocketServer.scala:340)
        at kafka.network.SocketServer$$anonfun$createAcceptorAndProcessors$1.apply(SocketServer.scala:146)
        at kafka.network.SocketServer$$anonfun$createAcceptorAndProcessors$1.apply(SocketServer.scala:142)
        at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
        at kafka.network.SocketServer.createAcceptorAndProcessors(SocketServer.scala:142)
        at kafka.network.SocketServer.startup(SocketServer.scala:91)
        at kafka.server.KafkaServer.startup(KafkaServer.scala:250)
        at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:38)
        at kafka.Kafka$.main(Kafka.scala:75)
        at kafka.Kafka.main(Kafka.scala)
Caused by: java.net.BindException: 无法指定被请求的地址
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
        at kafka.network.Acceptor.openServerSocket(SocketServer.scala:446)
        ... 11 more

原因:
server.properties配置文件中监听地址指向了一个
解决办法:
修改kafka/config/server.properties文件中的listeners=PLAINTEXT://hostname:9092,注意其中hostname应为本机的地址,也就是说应为每台机器的ip

问题2

[2022-03-09 00:02:37,098] ERROR Exiting Kafka due to fatal exception (kafka.Kafka$)
java.nio.file.NoSuchFileException: config/server.properties
        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
        at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
        at java.nio.file.Files.newByteChannel(Files.java:361)
        at java.nio.file.Files.newByteChannel(Files.java:407)
        at java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
        at java.nio.file.Files.newInputStream(Files.java:152)
        at org.apache.kafka.common.utils.Utils.loadProps(Utils.java:560)
        at kafka.Kafka$.getPropsFromArgs(Kafka.scala:42)
        at kafka.Kafka$.main(Kafka.scala:58)
        at kafka.Kafka.main(Kafka.scala)

原因:
启动命令位置不对
解决办法:
去kafka的根目录下启动

[root@b kafka]# bin/kafka-server-start.sh config/server.properties

问题3

创建topic时报错

Error while executing topic command : Replication factor: 1 larger than available brokers: 0.
[2022-03-09 00:14:42,185] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0.

原因:
访问地址不正确
解决办法:
查看server.properties中的zookeeper.connect=a:2181,b:2181,c:2181看后面有没有/kafka,以前版本是有/kafka的,所以创建topic就需要加上

kafka-topics.sh --zookeeper localhost:2181/kafka --create --topic topic-demo --partitions 1 --replication-factor 1

如果没有/kafka,则:

kafka-topics.sh --zookeeper localhost:2181 --create --topic topic-demo --partitions 1 --replication-factor 1

问题4

消费报错
生产:
kafka-console-producer.sh --broker-list localhost:9092 --topic topic-demo
消费:
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topic-demo --from-beginning

[2022-03-09 00:42:40,715] WARN [Producer clientId=console-producer] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)

原因:server.properties文件中监听的地址虽然写的是本机ip:192.168.xx.xx,但是生产ip写的localhost,消费也写的localhost,导致监听地址不同
解决办法:
listeners=PLAINTEXT://host:9092中host都统一
总之:监听,创建topic,生产,消费中ip需一致

总结

久病成医

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值