我在看一个问题,我们最近与Kafka日志,我们最终与一个完全偏移倒带。从日志中可以看出,3个副本中有两个在同一时刻退出,或者至少有一个节点日志是这么说的。大约在那时,我看到以下日志消息用不同的分区名重复了很多次:
ERROR [Controller id=0 epoch=71] Controller 0 epoch 71 failed to change state for partition PARTITION.NAME from OnlinePartition to
OnlinePartition (state.change.logger) kafka.common.StateChangeFailedException: Failed to elect leader for partition PARTITION.NAME under strategy PreferredReplicaPartitionLeaderElectionStrategy
at kafka.controller.PartitionStateMachine$$anonfun$doElectLeaderForPartitions$3.apply(PartitionStateMachine.scala:328)
at ...
奇怪的是
从onlinepartition到onlinepartition
当我在谷歌上搜索这个的时候,我没有发现什么真正有用的东西。另一件事是,所有出现的东西似乎都相当古老,并涉及Kafka1.0之前的版本。我们应该运行1.1.0。
关于为什么会有人试图将分区更改为它看起来已经处于的状态,有什么想法吗?我想我能理解为什么这会被视为失败,因为什么都不会改变,但总的来说这似乎是荒谬的。
1条答案
按热度按时间eeq64g8w1#
根据kafka controller internals页面,当应选择新的分区引线时,这是一个有效的状态转换:
有效的状态转换为:
. . .
onlinepartition,offlinepartition->onlinepartition
为此分区和一组副本选择新的leader和isr以接收leaderandisr请求,并将leader和isr写入zk
...
c。preferredreplicationleaderselector:new leader=第一个分配的副本(如果在isr中);新isr=当前isr;接收副本=分配的副本
...
向每个接收副本发送leaderandisr请求,并向每个实时代理发送updatemetadata请求
编辑
关于重置偏移量,请检查Kafka6189是否适用于您的情况。如果没有,请共享您的群集、主题和使用者组的配置详细信息。