kafka报错问题求解


0

CDH5.14.2环境,其中一台服务器dn01因磁盘坏了宕机了
现在出现了问题,顶替的dn01的kafka broken报如下错:
Controller 361 epoch 41 initiated state change for partition [test,2] from OfflinePartition to OnlinePartition failed
No broker in ISR for partition [test,2] is alive. Live brokers are: [Set()], ISR brokers are: [288]
什么原因求解!

2 答案


0

我觉得是这个样子的,kafka是根据hostname来区分broker的,宕机的和新加的机器名称一样,就会被以为是原来的节点,但是这个新加的节点并没有可用数据,所以选举失败。

可以试试新加一个不一样的机器名称试试

  新加的机器跟之前的名字不同的 - 狠大灭 2020-02-21


0

我个人感觉你这个主题副本数量应该是1,而刚好这个副本就在坏的这个机器上。
如果你的副本数不是1,比如是3,那kafka会自动均衡分配主题副本文件到不同的机器上,正常情况下,ISR副本集合应该是三个机器的broker id。这种情况下,即使是你的某一台broker挂掉,其他在ISR中的副本对应broker会被kafka选举为leader副本,对外提供服务。
总的来说,如果你的副本数为1,切好这个机器的磁盘坏了,那这个主题的数据就永久丢失了。
简单方法可以是删除这个主题,然后重建。负责的方法是,手动调整主题的副本分区分布,使用到kafka的kafka-reassign-partitions.sh脚本,这个脚本需要制定一个json文件,不是很难,可以在网上查查。


我来回答

写文章

提问题

面试题