首页 文章

为什么kafka中的__consumer_offsets主题没有传播给所有经纪人?

提问于
浏览
2

我有一个 3 zk 节点集群 . 和 7 kafka broker 节点 .

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

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

我知道我可以在配置文件中更改复制因子的默认值 .

但是,此主题仅复制到一个代理 . 那么什么是可以更改为将分区复制到所有代理的参数 .

3 回答

  • 1

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

  • 0

    这听起来很奇怪 . 我部署了一个3 Kafka代理群集,我的 __consumer_offsets 主题有50个分区(默认)分为3个代理并且有3个(默认)作为副本 . 当您从单个Kafka代理开始,创建消费者以阅读主题以便自动创建 __consumer_offsets 并且它将仅在代理0(唯一的)上时,您所描述的内容可能会发生 . 在那之后,你添加新的Kafka经纪人:没有做任何事情 __consumer_offsets 仍将留在经纪人0;你需要使用Kafka手动分区重新分配,如上所述 .

  • 1

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

    offsets.topic.replication.factor - “偏移量的复制因子主题( set higher to ensure availability ) . 在群集大小满足此复制因子要求之前,内部主题创建将失败 . ”

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

相关问题