Kafka刪除主題詳解

2021-09-26 21:46:13 字數 2466 閱讀 5564

在kafka的使用、測試過程中,可能老是會遇到想要刪除某個主題的需求,但是由於對其內部機制不夠了解,總是無法有效的刪除主題。今天這篇文章詳細討論如何徹底的刪除乙個主題。

在kafka的broker端的配置引數中有這樣乙個引數:delete.topic.enable,必須將它設定為true才能夠刪除kafka主題。這個引數的預設值是true。如果配置為false那麼刪除主題的命令將會被忽略。

kafka僅支援刪除使用者自定義主題,kafka的內建主題,如儲存偏移量的主題__consumer_offset_不允許被刪除,如果執行刪除命令會報錯。

對於不存在的主題如果刪除同樣會丟擲錯誤資訊

使用kafka-topics.sh指令碼刪除主題的行為本質上只是在zk中的/admin/delete_topics路徑下建立乙個待刪除主題的同名節點,以此標記該主題的待刪除狀態。所以我們可以在zk操作刪除主題

當我們執行下面kafka刪除主題的命令:

$>./bin/kafka-topics --delete --topic test-1 --zookeeper master:2181/kafka
再查詢kafka的主題:

[root@localhost kafka_2.11-0.10.2.2]$> ./bin/kafka-topics.sh --list --zookeeper localhost:2181/kafka   

__consumer_offsets

my-topic

test-1 - marked for deletion #發現主題僅僅是標記刪除了

那麼上面的刪除命令到底發生了什麼呢?

執行上述刪除主題命令以後,會在zookeeper的/admin/delete_topics路徑下建立乙個與刪除主題同名的節點

[zk: localhost:2181(connected) 4] ls /kafka/admin/delete_topics

[test-1]

了解原理以後,我們在zk的該目錄下手動建立要刪除的節點,看一下會發生什麼

[zk: localhost:2181(connected) 6] create /kafka/admin/delete_topics/test-2 ""

created /kafka/admin/delete_topics/test-2 #手動建立要刪除的節點成功

此時再次查詢kafka的主題資訊

[root@localhost kafka_2.11-0.10.2.2]$ ./bin/kafka-topics.sh --list --zookeeper localhost:2181/kafka

__consumer_offsets

my-topic

test-1 - marked for deletion

test-2 - marked for deletion #發現使用zk命令刪除的節點與test-1是同樣的效果

通過上述說明我們已經知道使用kafka的刪除命令是無法做到真正刪除乙個已經存在的主題的,那麼該如何徹底刪除主題呢?

乙個kafka主題包含兩部分內容:儲存在zk中的元資料資訊,和儲存在磁碟log.dir或者logs.dir下的主題實際儲存資料。

前者儲存在zk的/kafka/config/topics//kafka/brokers/topics下,只需要刪除zk中對應主題的節點即可(以test-1)為例

[zk: master:2181/kafka (connected) 1] rmr /config/topics/test-1

[zk: master:2181/kafka (connected) 2] rmr /brokers/topics/test-1

後者找到kafka配置的資料目錄,將其刪除即可

#該檔案的目錄配置在server.properties中

$>rm -rf /opt/modules/kafka-logs/test-1

執行上述操作以後,test-1主題的所有資料就被徹底刪掉了,我們再進行查詢發現已經沒有test-1了

[root@localhost kafka_2.11-0.10.2.2]# ./bin/kafka-topics.sh --list --zookeeper localhost:2181/kafka

__consumer_offsets

my-topic

test-2 - marked for deletion

kafka刪除主題資料和刪除主題

1 刪除主題 在server.properties中增加設定,預設未開啟 delete.topic.enable true 刪除主題命令 bin kafka topics delete topic test zookeeper localhost 2181 2 刪除主題資料 如果想保留主題,只刪除主...

Kafka 位移主題詳解

建立時機 提交策略 刪除過期訊息優點 缺點kafka中的內部位移主題是 consumer offsets。offset訊息 簡單的可以理解為 key value 註冊訊息 用來註冊 儲存 consumer group資訊的訊息 墓碑訊息 作用用於刪除 group 過期位移甚至是刪除 group 的訊...

Kafka主題 topic 的刪除

step1 如果需要被刪除topic 此時正在被程式 produce和consume,則這些生產和消費程式需要停止。因為如果有程式正在生產或者消費該topic,則該topic的offset資訊一致會在broker更新。呼叫kafka delete命令則無法刪除該topic。同時,需要設定 auto....