【问题标题】:Kafka: Number of Partitions are more than no of brokerKafka:分区数多于代理数
【发布时间】:2020-05-08 13:33:54
【问题描述】:

我有以下关于 Kafka 的问题:

  1. 如果我创建一个主题并指定的分区数量多于代理数量,那么单个代理将处理超过 1 个分区?

  2. 如果我创建一个主题并指定复制因子多于没有代理,该主题是否会创建?

  3. 单个代理能否处理不同主题的多个分区。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:
    1. 没错。如果您的分区比可用的代理多,那么您的一些代理将为每个主题存储多个分区。例如,假设您有一个活动代理和一个具有两个分区的主题;您的经纪人将如下所示:
        +-------------------+
        |      Topic X      |
        |    Partition 0    |
        |                   |
        |                   |
        |     Topic X       |
        |   Partition 1     |
        +-------------------+
    
    1. 不,不可能创建复制因子高于可用代理的主题。如果你尝试这样做,你会得到一个错误。例如,假设您正在尝试使用--replication-factor 3 创建一个主题,并且只有一个可用的代理:
    >> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic myTestTopic
    
    Error while executing topic command replication factor: 3 larger than available
    brokers: 1
    kafka.admin.AdminOperationException: replication factor: 3 larger than available
     brokers: 1
            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)
    
    1. 当然。假设您只有 2 个代理和 3 个主题,每个主题都有 2 个分区和 replication-factor=1。您的经纪人的示例概览如下所示:
        +-------------------+
        |      Topic 1      |
        |    Partition 0    |
        |                   |
        |                   |
        |     Topic 3       |
        |   Partition 1     |
        |                   |
        |                   |
        |     Topic 2       |
        |   Partition 1     |
        +-------------------+
    
    
        +-------------------+
        |      Topic 1      |
        |    Partition 1    |
        |                   |
        |                   |
        |     Topic 3       |
        |   Partition 0     |
        |                   |
        |                   |
        |     Topic 2       |
        |   Partition 0     |
        +-------------------+
    

    【讨论】:

      【解决方案2】:
      1. 是的,代理可以处理多个主题的多个分区。拥有更多分区会产生开销,因此选择“正确”的数量需要了解许多因素。
      2. 我认为主题可能会创建,但你很难写出来,可能会有几个结果,具体取决于具体设置。
      3. 绝对!

      祝你好运:D

      【讨论】:

        猜你喜欢
        • 2020-03-07
        • 2021-07-15
        • 2018-10-03
        • 2021-10-04
        • 1970-01-01
        • 2016-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多