【问题标题】:Error creating Kafka topic :- replication factor larger than available brokers创建 Kafka 主题时出错:- 复制因子大于可用代理
【发布时间】:2015-03-22 06:23:36
【问题描述】:

我正在尝试使用以下代码Source通过 AdminCommand 创建一个 kafka 主题

 ZkClient zkClient = new ZkClient(kafkaHost, 10000, 10000, ZKStringSerializer$.MODULE$);
    AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

但得到以下异常

Exception in thread "main" 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:155)

但是,我可以使用 shell 命令创建主题。

【问题讨论】:

    标签: java scala apache-kafka kafka-consumer-api


    【解决方案1】:

    在您的代码中,

     AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());
    

    第四个参数是复制因子。因此,您正在尝试创建一个名称为pa_reliancepoc_telecom_usageevent 的主题,分区为count of 10replication of 2。所以two kafka brokers 在创建主题时应该可用。如果少于两个可用,那么您将得到以下异常。

    Exception in thread "main" 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:155)
    

    确保您正在运行kafka cluster with two broker nodes 和两个节点should be alive while creating the topic.

    要在集群中运行 kafka,请参阅this link 中的第 6 步

    【讨论】:

    • 在任何情况下,该异常都具有严重的误导性,可能应为:“[...] 复制因子:2 大于可用代理:1”
    【解决方案2】:

    配置您的本地计算机以启动并运行多个代理,以防您决定保留replication_factor > 1

    你可以通过简单地拥有多个副本来做到这一点 server.properties 文件。例如
    server-1.properties & server-2.properties

    然后您需要在每个文件中指定不同的 broker.idport 以使它们独一无二..

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

    然后使用以下命令启动多个实例

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

    更多详情请查看Step 6: Setting up a multi-broker cluster

    【讨论】:

      【解决方案3】:

      我在设置多个代理时遇到了同样的问题。

      我缺少的步骤是:

      编辑配置文件时: 配置/服务器-1.properties: 经纪人.id=1 听众=纯文本://:9093 log.dir=/tmp/kafka-logs-1

      还需要更新 LOG BASICS 部分(见下文):

      ###################### 日志基础

      用于存储日志文件的目录的逗号分隔列表

      log.dirs=/tmp/kafka-logs-1
      

      【讨论】:

        猜你喜欢
        • 2016-01-10
        • 2019-06-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 2020-05-30
        • 1970-01-01
        • 1970-01-01
        • 2021-02-07
        相关资源
        最近更新 更多