首页 文章

列出Apache Kafka中所有可用代理的命令是什么?

提问于
浏览
3

我想在Apache Kafka中运行一个多节点集群 . 我制作了三个server.properties文件 - server,server1和server2 . 我还给了不同的经纪人ID和不同的端口号 . 仍在运行带有复制因子(如果为3)的脚本kafka-topics.sh时,它会抛出一个错误,指出复制因子:3大于代理数:0

我使用了这个命令:

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

显示的错误是

执行主题命令复制因子时出错:比可用代理大3:0 kafka.admin.AdminOperationException:复制因子:大于可用代理3:0 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)

你能让我知道我哪里错了吗?

1 回答

  • 2

    我想你应该至少启动3个kafka服务器,以确保代理的数量大于或等于复制因子的数量:

    首先,我们为每个代理程序创建一个配置文件:

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

    现在编辑这些新文件并设置以下属性:

    config/server-1.properties:
        broker.id=1
        listeners=PLAINTEXT://:9093
        log.dir=/tmp/kafka-logs-1
    
    
    config/server-2.properties:
        broker.id=2
        listeners=PLAINTEXT://:9094
        log.dir=/tmp/kafka-logs-2
    

    broker.id属性是群集中每个节点的唯一且永久的名称 . 我们必须覆盖端口和日志目录,因为我们在同一台机器上运行所有这些并且我们希望让所有代理尝试在同一端口上注册或覆盖彼此的数据 . 我们已经启动了Zookeeper并启动了我们的单个节点,因此我们只需要启动两个新节点:

    bin / kafka-server-start.sh config / server-1.properties bin / kafka-server-start.sh config / server-2.properties

    现在创建一个复制因子为3的新主题:

    bin / kafka-topics.sh --create --zookeeper localhost:2181 --rerelication-factor 3 --partitions 1 --topic my-replicated-topic

相关问题