1. 程式人生 > >kafka之主題操作kafka-topics命令

kafka之主題操作kafka-topics命令

建立Kafka的Tiopic

kafka-topics.bat --create -zookeeper localhost:2182 --replication-factor 2 --partitions 3 --topic testMcdull222

--create 建立主題

--topic 主題名稱

-zookeeper zookeeper叢集地址

--replication-factor  每個分割槽副本因子個數即每個分割槽有多少副本

--partitions  主題partition數量

--replica-assignment 不能同時使用--partitions --replication-factor引數。

指定partition的AR列表,未指定AR列表則會根據負載均衡演算法將partition的replica均衡的分佈在Kafka叢集中。--replica-assignment 1:3,2:1,3:2,逗號區分不同的partition,冒號區別相同partition中的replica,partition-0的AR=[1,3],partition-1的AR=[2,1],partition-2的AR=[3,2]。testMcdull222AR列表計算出來時--replica-assignment 2:3,1:3,1:2 。

第一個broker

第二個broker

第三個broker

--replica-assignment 引數一般不由使用者指定,由Kafka預設分配演算法保證,有兩個原則:

(1)使Topic的所有Partition Replica能夠均勻地分配至各個Kafka Broker(負載均衡);

(2)Partition 內的replica能夠均勻地分配在不同Kafka Broker。如果Partition的第一個Replica分配至某一個Kafka Broker,那麼這個Partition的其它Replica則需要分配至其它的Kafka Brokers,即Partition Replica分配至不同的Broker;

1、從Broker隨機位置開始按照輪詢方式選擇每個Partition的第一個replica

2、不同Partition剩餘replica按照一定的偏移量緊跟著各自的第一個replica

指定--replica-assignment引數相當於指定了分割槽數、副本數。

kafka-topics.bat --create -zookeeper localhost:2182 --topic testMcdull222666 --replica-assignment 1:3,2:1,3:2

第一個broker

第二個broker

第三個broker

檢視Kafka中Topic

kafka-topics.bat --zookeeper localhost:2183 --list

展示Topic詳細資訊

kafka-topics.bat --zookeeper localhost:2183 --describe --topic testMcdull

刪除Topic

kafka-topics.bat --zookeeper localhost:2183 --delete --topic testMcdull222333

如果kafaka啟動時載入的配置檔案中server.properties沒有配置"delete.topic.enable=true",那麼此時的刪除並不是真正的刪除,而是把topic標記為刪除:marked for deletion。或者直接從Zookeeper中刪除。

徹底刪除topic方式

 1、刪除kafka儲存目錄(server.properties檔案log.dirs配置,預設為"/tmp/kafka-logs")相關topic目錄

 2、如果配置了delete.topic.enable=true直接通過命令刪除,如果命令刪除不掉,直接通過zookeeper-client 刪除掉broker下的topic即可。

從Zookeeper中刪除

(1)登入zookeeper客戶端:命令:./bin/zookeeper-client

(2)找到topic所在的目錄:ls /brokers/topics

(3)找到要刪除的topic,執行命令:rmr /brokers/topics/topicName即可,此時topic被徹底刪除。