【问题标题】:Whether kafka broker holds replication set instead of partitions?kafka broker 是否持有复制集而不是分区?
【发布时间】:2018-04-02 09:40:05
【问题描述】:

从 Kafka 文档和我阅读的其他一些博客中,我得出结论,一个 kafka-broker 由一个主题分区组成。 Here 它说一个 Kafka-broker 只拥有一个分区。我的系统中只有一个代理,但我可以创建一个具有 3 个分区和 1 个复制因子的主题。我还尝试使用一个代理创建一个具有 3 个分区和 3 个复制因子的主题。它抛出以下错误

Error while executing topic command : replication factor: 3 larger than available brokers: 1 [2017-10-21 15:35:25,928] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: replication factor: 3 larger than available brokers: 1 (kafka.admin.TopicCommand$).

所以我有一个问题。

  1. Kafka-broker 是否持有复制而不是分区?
  2. 如果我使用单个代理创建 3 个分区,会发生什么情况?
  3. 在1个broker,1个replica,3个partition的情况下,kafka-broker可以容纳多少个topic的partition?

有人,请解释一下这里发生了什么。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    您引用的帖子并没有说一个代理只能存储一个分区。它只是说分区在代理之间不可拆分(主题是)。实际上,我管理着一个拥有数千个分区的经纪人。所以,对于你的问题:

    1. Kafka 代理拥有许多分区。复制是跨集群存储多个分区副本的方式。
    2. 如果您在单节点集群上创建具有 3 个分区的主题,则代理将保存所有分区的数据。由于需要更多节点,因此无法进行复制。
    3. 全部。

    【讨论】:

    • 所以这里所说的复制是broker的复制,不是topic。
    • 不,您在主题上设置了复制。但这受到集群中代理数量的限制。
    • 如果我有 4 个分区、2 个副本和 2 个代理会发生什么。这里的复制怎么样。
    • 当您请求跨集群保存 2 个分区数据副本时,两个代理都将保存这 4 个分区。
    • 谢谢。最后,一个问题,如果我有两个主题,每个主题有 4 个分区,第一个主题的副本是 1,第二个是 2。我有两个 Kafka-broker,在这种情况下会发生什么。
    【解决方案2】:

    总结:复制因子的数量必须等于或小于您拥有的代理数量。

    【讨论】:

      猜你喜欢
      • 2016-12-04
      • 2023-04-05
      • 2017-05-22
      • 2020-07-26
      • 2020-08-20
      • 2020-05-29
      • 2017-11-30
      • 2019-07-29
      • 1970-01-01
      相关资源
      最近更新 更多