1、通过命令查看offline的topic
./kafka-topics --describe --zookeeper $ZK_HOST:2181 --unavailable-partitions
看到3个故障topic
23/03/27 14:25:09 INFO zookeeper.ZooKeeperClient: [ZooKeeperClient] Connected.
Topic: ATLAS_ENTITIES Partition: 0 Leader: none Replicas: 1001 Isr: 1001
Topic: ATLAS_HOOK Partition: 0 Leader: none Replicas: 1001 Isr: 1001
Topic: ambari_kafka_service_check Partition: 0 Leader: none Replicas: 1001 Isr: 1001
但是实际集群中并没有这个1001的id,这个有可能是做过节点迁移遗留问题,所以只能进行topic重建
2、删除topic
关于这几个topic在CDP中的用途如下解释
ambari_kafka_service_check是HDP的service check使用的topic。在CDP中用不到
ATLAS_HOOK和ATLAS_ENTITIES这两个topic是Atlas用来收集血缘关系用的,可以这样来重建
从CM > Atlas > Actions > Create Kafka Topics for Atlas重建topic。
删除命令
./kafka-topics --delete --zookeeper $ZK_HOST:2181 --topic ATLAS_ENTITIES
3、重建topic
./kafka-topics --create --zookeeper $ZK_HOST:2181 --partitions 1 --replication-factor 2 --topic ATLAS_ENTITIES
4、删除过程出现的问题
1)执行删除后在去查看依旧可以看到对应的topic
kafka-topics --list --zookeeper $ZK_HOST:2181
ATLAS_ENTITIES - marked for deletion
这是因为delete.topic.enable
参数是true
去zk的节点删除对应信息
rmr /brokers/topics/ATLAS_ENTITIES
或者delete /brokers/topics/ATLAS_ENTITIES
如果删除后topic还在,对对应的broker重启(缓存原因)即可解决