创建Kafka主题时出错 - 复制因子大于可用代理

时间:2015-10-13 09:00:53

标签: apache-kafka

我正在尝试通过命令行遵循Apache Kafka网站上的指南在Kafka中创建主题。 在运行命令时:

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

我得到如下错误:

Error while executing topic command replication factor: 1 larger than available
brokers: 0
kafka.admin.AdminOperationException: replication factor: 1 larger than available
 brokers: 0
        at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
        at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:171)
        at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:93)
        at kafka.admin.TopicCommand$.main(TopicCommand.scala:55)
        at kafka.admin.TopicCommand.main(TopicCommand.scala)

[2015-10-13 14:25:38,607] INFO Processed session termination for sessionid: 0x15
06056566d0004 (org.apache.zookeeper.server.PrepRequestProcessor)
[2015-10-13 14:25:38,608] INFO Closed socket connection for client /127.0.0.1:33
391 which had sessionid 0x1506056566d0004 (org.apache.zookeeper.server.NIOServer
Cnxn)

我该如何解决这个问题?有什么好的文档来开始这个吗? 谢谢!

16 个答案:

答案 0 :(得分:18)

似乎您的服务器未启动,请检查问题日志

杀死进程

sudo fuser -k 2181/tcp

运行zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties

运行Kafka

bin/kafka-server-start.sh config/server.properties  ' 

答案 1 :(得分:8)

如果我是你,我会试试这段代码:

  

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

如果您使用的集群中zookeeper分布在3个节点中,您应该localhost:2181/kafka取代direccion1:2181,direction2:2181,direction3:2181/kafka

答案 2 :(得分:5)

它清楚地说0经纪人可用。通过

启动经纪人
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

基于Apache Kafka教程,然后尝试

答案 3 :(得分:2)

我遇到了同样的问题。我解决了这个问题。我认为这是因为没有后台启动。 所以,我们需要启动背景

bin/kafka-server-start.sh config/server.properties &
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test &

答案 4 :(得分:2)

我遇到了同样的问题,但最终我尝试了以下对我有用的步骤:

1)使用以下命令在Zookeeper中创建chroot:

zkCli.sh-服务器本地主机:2181

创建/ kafka1 []

2)对于kafka brokers配置,修改zookeeper.connect并添加chroot路径: 例如。

在server.properties中:

zookeeper.connect = localhost:2181 / kafka1

3)启动Zookeeper

4)启动Kafka服务器

5)创建如下主题: bin / kafka-topic.sh --create -zookeeper localhost:2181 / kafka1 -复制因子1-分区1-主题数据

6)确认创建的主题: bin / kafka-topics.sh --list --zookeeper本地主机:2181 / kafka1

以下是我的参考资料: https://community.hortonworks.com/questions/102132/run-multiple-broker-versions-in-the-same-cluster.html

答案 5 :(得分:1)

您的Zookeeper无法看到任何Kafka代理。请尝试登录Zookeepr控制台:bin/zkCli.sh -server localhost:2181 在控制台上运行[zk: localhost:2181(CONNECTED) 2] ls /brokers/ids。一定不要出现任何经纪人。您需要重新启动所有Kafka代理,并检查kafka进程日志。有时,即使进程显示为正在运行(ps -ef | grep kafka),它也可能没有真正完全启动,因为Zookeeper无法看到它。 Apache Kafka发行版0.11.0也遇到了同样的问题。

答案 6 :(得分:1)

对于那些确定代理已启动并正在运行的人,请检查您的server.properties配置。

在我的情况下,kafka的znodes为/kafka,如下所示。

zookeeper.connect=zk1.beta:2181,zk2.beta:2181,zk3.beta:2181/kafka

因此,在创建主题时尝试以下命令:

bin/kafka-topics.sh --create --zookeeper zk1.beta:2181/kafka --replication-factor 2 --partitions 2 --topic test2

答案 7 :(得分:0)

在删除我创建的唯一主题后,我遇到了同样的情况。

解决问题的方法是将Kafka和Zookeeper放下,更新Kafka设置(server.properties文件),我在其中添加以下设置

delete.topic.enable=true

保存文件,将Zookeeper和Kafka打开,所有内容都照常运行。

答案 8 :(得分:0)

确保kafka服务器已正确启动。如果您使用-dameon参数将kafka服务器作为守护程序启动。尝试将其删除,然后查看启动期间是否有任何错误。

我遇到的问题是文件访问问题,用户运行kafka时无法访问我配置的日志目录。在我授予访问权限后,它就可以使用!

答案 9 :(得分:0)

尝试通过以下方式添加服务器:

MissingMemberException: 'ScopeStorage' object has no attribute 'commands'

答案 10 :(得分:0)

服务器上可能有以前部署中的一个遗留的,失控的zookeeper。列出豆荚,容器,过程等,并检查它们的年龄/开始时间以发现它。

答案 11 :(得分:0)

在我的情况下,该错误是由于我在Zookeeper可用之前就开始创建主题而引起的。由于我用脚本完成了所有操作,因此在创建主题之前引入一些延迟会有所帮助。如果您的zookeeper客户端端口为2181,则可以通过以下方法检查代理的可用性:

echo dump | nc zookeeper 2181 | grep brokers

答案 12 :(得分:0)

就我而言,config/server.properties

zookeeper.connect=localhost:2181

但是我创建这样的主题:

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

然后我遇到了这个问题。

我通过修复以下创建主题命令来解决此问题:

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

您必须确保--zookeeper的选项与zookeeper.connect中的config/server.properties相同

答案 13 :(得分:0)

  • 检查是否所有经纪人都已注册到Zookeeper:

    zookeeper-shell.sh localhost:2181 ls /brokers/ids

  • 在括号[]

  • 中很可能缺少一些ID
  • 登录到该ID所在的计算机,然后重新启动代理:

    kafka-server-stop.sh
    nohup kafka-server-start.sh ../config/server.properties > /dev/null 2>&1 &
    
  • 再次检查Zookeeper现在是否可以正确看到您的所有经纪人。
  • 重试您的创建主题命令。

希望有帮助。

答案 14 :(得分:0)

删除在以下目录中创建的日志和使用者偏移量文件夹。

C:\ Kafka \ kafka_2.12-2.5.0 \ data \ zookeeper

PS:您可以松开所有先前的主题详细信息。

答案 15 :(得分:-1)

我遇到了同样的问题。你必须遵循指南的这一部分: http://kafka.apache.org/documentation.html#quickstart_multibroker

我没有任何创建的经纪人。创建2个新经纪人,您将解决问题。请按照以下步骤操作:

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties

创建这些文件后,您必须使用以下更改进行配置:

在“server-1.properties”中:

broker.id=1
port=9093 
log.dir=/tmp/kafka-logs-1
host.name=localhost

(端口号必须是server.properties + 1中的端口号。我有9092所以我必须写9093)

在“server-2.properties”中:

broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2
host.name=localhost

(端口号必须是server-1的旁边。在我的情况下是9094)