kafka.admin.topiccommand失败

6gpjuf90  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(536)

我使用的是单节点kafka v0.10.2(16gbram,8核)和单节点zookeeper v3.4.9(4gbram,1核)。我有64个消费群和500个主题,每个主题有250个分区。我能够执行命令,只需要Kafka经纪人和其运行良好的前。
./kafka-consumer-groups.sh—引导服务器localhost:9092 --describe --组
但是当我执行像createtopic这样的管理命令时,比如altertopic
./kafka-topics.sh--create--zookeeper:2181--复制因子1--分区1--主题
显示以下异常:
执行topic命令时出错:复制因子:1大于可用代理:0[2017-11-16 11:22:13592]error org.apache.kafka.common.errors.invalidreplicationfactorexception:复制因子:1大于可用代理:0(kafka.admin.topiccommand$)
我查了一下我的经纪人的情况。在server.log中存在以下警告

  1. [2017-11-16 11:14:26,959] WARN Client session timed out, have not heard from server in 15843ms for sessionid 0x15aa7f586e1c061 (org.apache.zookeeper.ClientCnxn)
  2. [2017-11-16 11:14:28,795] WARN Unable to reconnect to ZooKeeper service, session 0x15aa7f586e1c061 has expired (org.apache.zookeeper.ClientCnxn)
  3. [2017-11-16 11:21:46,055] WARN Unable to reconnect to ZooKeeper service, session 0x15aa7f586e1c067 has expired (org.apache.zookeeper.ClientCnxn)

下面提到的是我的kafka服务器配置:

  1. broker.id=1
  2. delete.topic.enable=true
  3. num.network.threads=3
  4. num.io.threads=8
  5. socket.send.buffer.bytes=102400
  6. socket.receive.buffer.bytes=102400
  7. socket.request.max.bytes=104857600
  8. log.dirs=/kafka/data/logs
  9. num.partitions=1
  10. log.segment.bytes=1073741824
  11. log.retention.check.interval.ms=300000
  12. zookeeper.connect=<zookeeperIP>:2181
  13. zookeeper.connection.timeout.ms=6000

zookeeper配置为:

  1. # The number of milliseconds of each tick
  2. tickTime=2000
  3. # The number of ticks that the initial
  4. # synchronization phase can take
  5. initLimit=10
  6. # The number of ticks that can pass between
  7. # sending a request and getting an acknowledgement
  8. syncLimit=5
  9. # the directory where the snapshot is stored.
  10. # do not use /tmp for storage, /tmp here is just
  11. # example sakes.
  12. dataDir=/zookeeper/data
  13. # the port at which the clients will connect
  14. clientPort=2181
  15. # the maximum number of client connections.
  16. # increase this if you need to handle more clients
  17. # maxClientCnxns=60
  18. autopurge.snapRetainCount=20
  19. # Purge task interval in hours
  20. # Set to "0" to disable auto purge feature
  21. autopurge.purgeInterval=48

我不知道要调整哪个配置。我所缺少的。任何帮助都将不胜感激。

juzqafwq

juzqafwq1#

当你使用zookeeper参数运行consumer时
./kafka-topics.sh--create--zookeeper:2181--复制因子1--分区1--主题
这意味着消费者会去问zookeeper有关经纪人的详细信息。如果zookeeper中提供了代理详细信息,那么它就可以连接到代理。
在你的情况下,我认为zookeeper丢失了经纪人的详细信息。zookeeper通常将所有配置存储在树路径中。
要检查zookeeper是否有代理路径,您需要使用登录zookeeper shell /bin/zkCli.sh -server localhost:2181 连接成功后做什么 ls / 您将看到这样的输出

  1. [controller, controller_epoch, brokers, zookeeper, admin, isr_change_notification, consumers, config]

然后再做 ls /brokers 输出将是 [ids, topics, seqid] 然后再做 ls /brokers/ids 输出将是 [0] -它是一个代理id的数组。如果数组为空 [] 这意味着你的Zookeeper没有经纪人的详细信息
在这种情况下,您需要重新启动代理和zookeeper。
更新时间:
这个问题通常不会发生。因为zookeeper服务器正在自动关闭(终止)或丢失代理路径。
为了克服这一点,最好多维护两个zookeers,这意味着完成3个zookeers节点。
如果是本地使用localhost:2181, localhost:2182, localhost:2183.
如果是集群,则使用三个示例zookeeper1:2181、zookeeper2:2181、zookeeper3:2181
你最多可以容忍两次失败。
用于创建主题并使用以下命令:
./kafka-topics.sh—创建—缩放器localhost:2181,localhost:2182,localhost:2183 --replication-factor 1--分区1--主题

展开查看全部

相关问题