首页 > 解决方案 > 数据不一致的 kafka 代理 - NotLeaderForPartitionError

问题描述

我们有一个 13 节点的 Kafka 集群,每个代理有多个磁盘,所有主题的复制因子为 3。 

Broker 6 存在硬件问题,需要重新加载完整的操作系统 (Linux) 并更换 2 次磁盘。现在我在这个节点上再次安装了 Kafka,使用相同的代理 id 6,但开始从所有生产者那里得到一个异常 -

[Error 6] NotLeaderForPartitionError: ProduceResponsePayload(topic=u'amyTopic', partition=7, error=6, offset=-1)

我假设由于我使用相同的代理 ID,它(动物园管理员?或控制器代理?)期待磁盘中的数据被替换或其他一些可能在操作系统重新加载期间被清除的元信息。

在不对集群造成太大干扰且不会丢失数据的情况下,我必须将此节点添加回集群有哪些选项?我是否应该为此节点使用新的代理 ID,然后像添加新节点后那样重新分区每个主题的数据?我们在集群中有很多数据(几百 TB),我试图避免由数据重新分区引起的大量数据移动,它可能会阻塞整个集群。请建议。

标签: apache-kafka

解决方案


推荐阅读