1. 程式人生 > >kafka的topic刪除

kafka的topic刪除

刪除kafka的topic,出現如下提示

[[email protected] ~]#kafka-topics.sh --delete --zookeeper mini1:2181 --topic test
Topic test is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

查詢可知,kafka刪除topic的過程如下:
在這裡插入圖片描述

如果在在server.properties中新增:

delete.topic.enable=
true

此時使用

bin/kafka-topics.sh --zookeeper zk_host:port/chroot --delete --topic test-topic

那麼,命令返回後,zookeeper的/admin/delete_topics目錄下會新建立一個臨時節點test-topic.

刪除執行緒執行刪除操作的真正邏輯是:

  1. 它首先會給當前所有broker傳送更新元資料資訊的請求,告訴這些broker說這個topic要刪除了,你們可> > 以把它的資訊從快取中刪掉了
  2. 開始刪除這個topic的所有分割槽
    2.1 給所有broker發請求,告訴它們這些分割槽要被刪除。broker收到後就不再接受任何在這些分割槽上的客> 戶端請求了
    2.2 把每個分割槽下的所有副本都置於OfflineReplica狀態,這樣ISR就不斷縮小,當leader副本最後也被置> 於OfflineReplica狀態時leader資訊將被更新為-1
    2.3 將所有副本置於ReplicaDeletionStarted狀態
    2.4 副本狀態機捕獲狀態變更,然後發起StopReplicaRequest給broker,broker接到請求後停止所有> > > fetcher執行緒、移除快取,然後刪除底層log檔案
    2.5 關閉所有空閒的Fetcher執行緒
  3. 刪除zookeeper下/brokers/topics/test-topic節點
  4. 刪除zookeeper下/config/topics/test-topic節點
  5. 刪除zookeeper下/admin/delete_topics/test-topic節點
  6. 更新各種快取,把test-topic相關資訊移除出去

而如果不配置delete.topic.enable=true命令指揮在zookeeper上刪除該節點的資訊,讓你無法訪問它,但是他的資料在儲存在kafka上面。