返回到文章

采纳

编辑于 4年前

kafka2.x 版本分区follower不从leader同步数据

kafka

1、问题描述

kafka集群一台broker(broker id:2),某一天的某一个时间点(2020.09.09),上面大量topic的分区没有从leader同步数据。

某一个topic信息如下:

[hduser@test yjt10-0]$ kafka-topics.sh --describe --zookeeper localhost:2181 --topic yjt10
Topic:yjt10    PartitionCount:1    ReplicationFactor:3    Configs:
    Topic: yjt10    Partition: 0    Leader: 1    Replicas: 1,0,2    Isr: 1,0

2、问题现象

通过查看日志,发现日志文件里面只有如下的信息:

INFO Replica loaded for partition yjt10-0 with initial high watermark 0 (kafka.cluster.Replica)

没有发现从leader同步数据的日志。

3、个人怀疑和做过的测试

由于目前是运维工作,代码能力不强,勉强看了一下源码,通过源码里面看到,只要当前的topic创建以后,就会创建当前follower到leader的ReplicaFetcherThread线程,如果线程已经存在,就不会创建。

通过jstack 查看broker的线程栈,没有发现ReplicaFetcherThread处于blocked状态,所以当前怀疑是不是该线程直接挂了??,但是经过测试,如果手动把当前ReplicaFetcherThread线程对应的pid直接kill,那么对应的broker就直接挂了,也有可能是如果线程是被broker进程主动kill的话,那么broker对应的kafka进程不会退出,如果手动杀掉线程对应的pid号,由于线程共用kafka进程的信息,所以实际kill掉的是broker的进程。目前对该问题的产生很疑惑,还希望大佬能帮忙解惑下。