Apache kafka kafka.admin.TopicCommand失败

Apache kafka kafka.admin.TopicCommand失败,apache-kafka,apache-zookeeper,Apache Kafka,Apache Zookeeper,我使用的是单节点Kafka V0.10.2(16 GB内存,8个内核)和单节点zookeeper V3.4.9(4 GB内存,1个内核)。我有64个消费群体和500个主题,每个主题有250个分区。我能够执行只需要Kafka代理及其运行良好的命令 前 ./kafka-consumer-groups.sh--引导服务器本地主机:9092 --描述——组 但是当我执行像createtopic这样的管理命令时,比如altertopic ./kafka-topics.sh--create--zookeep

我使用的是单节点Kafka V0.10.2(16 GB内存,8个内核)和单节点zookeeper V3.4.9(4 GB内存,1个内核)。我有64个消费群体和500个主题,每个主题有250个分区。我能够执行只需要Kafka代理及其运行良好的命令 前

./kafka-consumer-groups.sh--引导服务器本地主机:9092 --描述——组

但是当我执行像createtopic这样的管理命令时,比如altertopic

./kafka-topics.sh--create--zookeeper:2181 --复制因子1--分区1--主题

正在显示以下异常:

执行topic命令时出错:复制因子:1 比可用经纪人多:0[2017-11-16 11:22:13592]错误 org.apache.kafka.common.errors.InvalidReplicationFactorException: 复制因子:1大于可用代理:0 (kafka.admin.TopicCommand$)

我查了一下我的经纪人的情况。在server.log中有以下警告

[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)
[2017-11-16 11:14:28,795] WARN Unable to reconnect to ZooKeeper service, session 0x15aa7f586e1c061 has expired (org.apache.zookeeper.ClientCnxn)
[2017-11-16 11:21:46,055] WARN Unable to reconnect to ZooKeeper service, session 0x15aa7f586e1c067 has expired (org.apache.zookeeper.ClientCnxn) 
下面提到的是我的Kafka服务器配置:

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

我无法确定要调整哪个配置。我所缺少的。如果您使用zookeeper参数运行consumer,我们将不胜感激。

./kafka-topics.sh--create--zookeeper:2181--replication factor 1 --分区1——主题

这意味着消费者会去问动物园管理员关于经纪人的详细信息。如果zookeeper中提供了代理详细信息,则它可以连接到代理

在您的场景中,我认为zookeeper丢失了经纪人的详细信息。zookeeper通常将所有配置存储在树路径中

要检查zookeeper是否具有代理路径,您需要使用
/bin/zkCli.sh-server localhost:2181登录zookeeper shell

成功连接后,执行
ls/
您将看到如下输出

[controller, controller_epoch, brokers, zookeeper, admin, isr_change_notification, consumers, config]
然后做
ls/brokers
输出将
[id,topics,seqid]

然后do
ls/brokers/id
输出将是
[0]
-它是一个代理id的数组。如果数组为空
[]
,则表示zookeeper中不存在代理详细信息

在这种情况下,您需要重新启动代理和zookeeper

已更新

这个问题通常不会发生。因为zookeeper服务器正在自动关闭(终止)或丢失代理路径

为了克服这个问题,最好多维护两个zookeepers,即完成3个zookeepers节点

如果是本地的,则使用localhost:2181、localhost:2182、localhost:2183

如果是集群,则使用三个实例zookeeper1:2181、zookeeper2:2181、zookeeper3:2181

您最多可以容忍两次失败。

用于创建主题并使用以下命令:

./kafka-topics.sh--create--zookeeper localhost:2181,localhost:2182,localhost:2183--复制因子1 --分区1——主题


当您使用zookeeper参数运行consumer时,如

./kafka-topics.sh--create--zookeeper:2181--replication factor 1 --分区1——主题

这意味着消费者会去问动物园管理员关于经纪人的详细信息。如果zookeeper中提供了代理详细信息,则它可以连接到代理

在您的场景中,我认为zookeeper丢失了经纪人的详细信息。zookeeper通常将所有配置存储在树路径中

要检查zookeeper是否具有代理路径,您需要使用
/bin/zkCli.sh-server localhost:2181登录zookeeper shell

成功连接后,执行
ls/
您将看到如下输出

[controller, controller_epoch, brokers, zookeeper, admin, isr_change_notification, consumers, config]
然后做
ls/brokers
输出将
[id,topics,seqid]

然后do
ls/brokers/id
输出将是
[0]
-它是一个代理id的数组。如果数组为空
[]
,则表示zookeeper中不存在代理详细信息

在这种情况下,您需要重新启动代理和zookeeper

已更新

这个问题通常不会发生。因为zookeeper服务器正在自动关闭(终止)或丢失代理路径

为了克服这个问题,最好多维护两个zookeepers,即完成3个zookeepers节点

如果是本地的,则使用localhost:2181、localhost:2182、localhost:2183

如果是集群,则使用三个实例zookeeper1:2181、zookeeper2:2181、zookeeper3:2181

您最多可以容忍两次失败。

用于创建主题并使用以下命令:

./kafka-topics.sh--create--zookeeper localhost:2181,localhost:2182,localhost:2183--复制因子1 --分区1——主题


你能告诉我你的zookeeper状态吗?@shakelmohammad正在运行。/zkServer.sh状态使用config:/zookeeper/zookeeper-3.4.9/bin/./conf/zoo.cfg模式默认启用以下输出zookeeper JMX:standalone@SHAKEELMOHAMMAD当我查看上一个kafka-server.log时,它已满,警告试图通过发送响应没有打开连接的通道,连接id 2(kafka.network.Processor)如何解决此问题?您能告诉我您的zookeeper状态吗?@shakelmohammad正在运行。/zkServer.sh状态使用config:/zookeper/zookeeper-3.4.9/bin/./conf/zoo.cfg模式默认启用以下输出zookeeper JMX:standalone@SHAKEELMOHAMMAD当我查看上一个kafka-server.log时,它已满,并显示警告要通过没有打开连接的通道发送响应,连接id 2(kafka.network.Processor)如何解决此问题?感谢您的解释,但是我可以做些什么来防止此类情况,我应该更改或调整一些配置吗?感谢您的解释,但是我可以做些什么来防止此类情况,我应该更改或调整一些配置吗?