一、建立主題bootstrap
kafka提供了兩種方式建立主題ide
1):若代理設置了 auto.create.topics.enable=true,該配置默認值是true,當生產者向一個還未建立的主題發送一個消息,會自動建立一個擁有 ${num.partitions} 個分區和 ${default.replication.factor} 個副本的主題。代理
2):客戶端經過執行 kafka-topics.sh 腳本建立一個主題。server
建立一個名稱爲"kafka-action"、擁有2個副本和3個分區的主題:kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factory 2 --partitions 3 --topic kafka-actionkafka
--bootstrap-server 參數是指kafka的broker的地址;同步
--replication-factory 參數是指副本數,副本會被分佈在不一樣的節點上,副本的數量不能超過節點數;it
--partitions 參數是指主題的分區數,kafka經過分區策略,將一個主題的消息分散到多個分區並分別保存到不一樣的代理上,以此來提升消息處理的吞吐量。io
建立主題的時候能夠經過config參數來設置主題級別的配置以覆蓋默認配置,能夠設置多組配置,如:--config config-name1=value1 --config config-name2=value2zookeeper
二、刪除主題配置
刪除 kafka 主題,通常有兩種方式:
1):手動刪除各節點 ${log.dir} 目錄下該主題分區文件夾,同時登錄zookeeper客戶端刪除待刪除主題對應的節點,主題元數據保存在 /brokers/topics 和 /config/topics 目錄下;
2):執行 kafka-topics..sh 腳本進行刪除,若但願經過該腳本觸底刪除主題,須要保證在啓動kafka服務時加載的server.properties文件中配置的 delete.topic.enable=true,默認值是false;不然執行該腳本並未真正刪除主題,只是在 zookeeper的 /admin/delete_topics 目錄下建立了一個與待刪除主題同名的節點,將該主題標記爲刪除狀態。
kafka-topics --delete --bootstrap-server localhost:9092 --topic kafka-action
三、查看主題
kafka 提供了 list 和 describe 兩個命令查看主題信息,其中 list 參數列出 kafka 全部的主題名,describe 參數能夠查看全部主題或某個特定主題的信息;
查看全部主題:kafka-topics.sh --list --bootstrap-server localhost:9092
查看某個特定主題: kafka-topics.sh --describe --bootstrap-server localhost:9092 或者 kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic kafka-action
查看正在同步的主題:
處於 under replicatied 狀態的主題可能正在進行同步操做,也有可能同步發生了異常,即此時查詢到的主題分區的ISR列表長度小於AR列表長度。
命令: kafka-topics.sh --describe --bootstrap-server localhost:9092 --under-replicated-partitions
查詢沒有Leader的分區;
命令: kafka-topics.sh --describe --bootstrap-server localhost:9092 --unavailable-partitions
經過指定 topic 參數,能夠查詢特定主題的哪些分區的Leader不可用了。
查看主題覆蓋了哪些默認配置:
命令: kafka-topics.sh --describe --bootstrap-server localhost:9092 --topics-with-overrides
查看某個特定主題覆蓋了哪些默認配置:kafka-topics.sh --describe --bootstrap-server localhost:9092 --topics-with-overrides --topic kafka-action