【问题标题】:Why __consumer_offsets topic in kafka is not spreading to all the brokers?为什么 kafka 中的 __consumer_offsets 主题没有传播到所有经纪人?
【发布时间】:2018-10-18 07:56:43
【问题描述】:

我有一个 3 zk 节点集群。以及 7 个 kafka 代理 节点。

因此,当我创建任何主题时,我可以使用命令行参数设置副本因子和分区数。

这些分区被传播到所有 7 个代理。但是有一个主题,即__consumer_offsets,它是自动创建的,并且它只传播到 1 个代理(id=0)和 1 个复制。

我知道我可以更改配置文件中的默认复制因子编号。

但是,此主题仅复制到一个代理。那么可以更改哪些参数以将分区复制到所有代理。

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    对我来说这听起来很奇怪。我部署了一个 3 个 Kafka 代理集群,我的 __consumer_offsets 主题有 50 个分区(默认)分布在 3 个代理之间,并且有 3 个(默认)作为副本。 当您从单个 Kafka 代理开始时,您所描述的可能会发生,创建用于阅读主题的消费者,以便自动创建 __consumer_offsets 并且它将仅在代理 0(唯一一个)上。之后,添加新的 Kafka 代理:不执行任何操作,__consumer_offsets 仍将保留在代理 0 上;如上所述,您需要使用 Kafka 手动重新分配分区。

    【讨论】:

    • "当您从单个 Kafka 代理开始时,您所描述的可能会发生,创建用于阅读主题的消费者,以便自动创建 __consumer_offsets 并且它将仅在代理 0(唯一一个)上“是的,你是对的......我们的 Spark 应用程序一直在使用来自 kafka 代理的数据。我没有意识到这一点。感谢您的回复。
    • 很高兴 ;)
    【解决方案2】:

    您将需要使用 Kafka 分区重新分配。不幸的是,目前这是一个半手动过程: https://kafka.apache.org/documentation/#basic_ops_cluster_expansion

    【讨论】:

      【解决方案3】:

      您需要在代理配置中将“offsets.topic.replication.factor”设置为所需的副本数。

      偏移主题的复制因子(设置更高以确保 可用性)。确保有效的复制因子 offsets topic是配置的值,存活的broker数有 至少是第一次请求时的复制因子 对于偏移量主题。如果没有,要么创建偏移量主题 失败,否则它将获得 min(alive brokers, 配置的复制因子)

      默认值:3
      重要性:高

      参考 - http://kafka.apache.org/documentation/#brokerconfigs

      【讨论】:

      • 是的,它将设置复制因子。但是 __consumer_offset 仍然只在一个经纪人上传播。那么我如何才能将这个话题传播到多个经纪人身上呢?
      猜你喜欢
      • 2017-01-24
      • 2019-05-14
      • 1970-01-01
      • 2022-11-29
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多