如何使用一个 Kafka 代理从 NoReplicaOnlineException 中恢复?
How to recover from NoReplicaOnlineException with one Kafka broker?
我们在开发实验室中设置了一个非常简单的 Kafka 0.8.1.1。它只是一个节点。我们定期 运行 进入这个错误:
[2015-08-10 13:45:52,405] ERROR Controller 0 epoch 488 initiated state change for partition [test-data,1] from OfflinePartition to OnlinePartition failed (state.change.logger)
kafka.common.NoReplicaOnlineException: No replica for partition [test-data,1] is alive. Live brokers are: [Set()], Assigned replicas are: [List(0)]
at kafka.controller.OfflinePartitionLeaderSelector.selectLeader(PartitionLeaderSelector.scala:61)
at kafka.controller.PartitionStateMachine.electLeaderForPartition(PartitionStateMachine.scala:336)
at kafka.controller.PartitionStateMachine.kafka$controller$PartitionStateMachine$$handleStateChange(PartitionStateMachine.scala:185)
at kafka.controller.PartitionStateMachine$$anonfun$triggerOnlinePartitionStateChange.apply(PartitionStateMachine.scala:99)
at kafka.controller.PartitionStateMachine$$anonfun$triggerOnlinePartitionStateChange.apply(PartitionStateMachine.scala:96)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach.apply(TraversableLike.scala:743)
谁能推荐一种从中恢复的策略?是否存在这样的事情,或者我们是否需要构建另一个或两个节点并在我们的主题上设置复制因子以覆盖我们放入集群的所有节点?
我们有 3 个 zookeeper 节点,它们对其他应用程序(如 Storm 和 HBase)的响应非常好,因此我们非常有信心 ZooKeeper 不是这里的罪魁祸首。有什么想法吗?
这个问题是关于Kafka 0.8的,如果我没记错的话应该是不支持了。但是,对于未来的读者来说,以下准则应该是相关的:
- 如果您关心稳定性、正常运行时间、可靠性或任何与此总体方向相关的内容,请确保您至少有 3 个 kafka 节点。
- 如果你在旧的kafka版本中遇到问题,请认真考虑升级到最新的kafka版本。在撰写本文时,我们已经在 Kafka 2
我们在开发实验室中设置了一个非常简单的 Kafka 0.8.1.1。它只是一个节点。我们定期 运行 进入这个错误:
[2015-08-10 13:45:52,405] ERROR Controller 0 epoch 488 initiated state change for partition [test-data,1] from OfflinePartition to OnlinePartition failed (state.change.logger)
kafka.common.NoReplicaOnlineException: No replica for partition [test-data,1] is alive. Live brokers are: [Set()], Assigned replicas are: [List(0)]
at kafka.controller.OfflinePartitionLeaderSelector.selectLeader(PartitionLeaderSelector.scala:61)
at kafka.controller.PartitionStateMachine.electLeaderForPartition(PartitionStateMachine.scala:336)
at kafka.controller.PartitionStateMachine.kafka$controller$PartitionStateMachine$$handleStateChange(PartitionStateMachine.scala:185)
at kafka.controller.PartitionStateMachine$$anonfun$triggerOnlinePartitionStateChange.apply(PartitionStateMachine.scala:99)
at kafka.controller.PartitionStateMachine$$anonfun$triggerOnlinePartitionStateChange.apply(PartitionStateMachine.scala:96)
at scala.collection.TraversableLike$WithFilter$$anonfun$foreach.apply(TraversableLike.scala:743)
谁能推荐一种从中恢复的策略?是否存在这样的事情,或者我们是否需要构建另一个或两个节点并在我们的主题上设置复制因子以覆盖我们放入集群的所有节点?
我们有 3 个 zookeeper 节点,它们对其他应用程序(如 Storm 和 HBase)的响应非常好,因此我们非常有信心 ZooKeeper 不是这里的罪魁祸首。有什么想法吗?
这个问题是关于Kafka 0.8的,如果我没记错的话应该是不支持了。但是,对于未来的读者来说,以下准则应该是相关的:
- 如果您关心稳定性、正常运行时间、可靠性或任何与此总体方向相关的内容,请确保您至少有 3 个 kafka 节点。
- 如果你在旧的kafka版本中遇到问题,请认真考虑升级到最新的kafka版本。在撰写本文时,我们已经在 Kafka 2