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引數。
第一個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被徹底刪除。