Kafka(六)Kafka級別操作
阿新 • • 發佈:2018-07-19
itl eat 更多 val 單獨 bar 所在 keep ted
主題管理
創建主題
如果配置了auto.create.topics.enable=true(這也是默認值)這樣當生產者向一個沒有創建的主題發送消息就會自動創建,其分區數量和副本數量也是有默認配置來控制的。
# 我們這裏創建一個3個分區每個分區有2個副本的主題 kafka-topics.sh --create --zookeeper 172.16.48.171:2181/kafka --replication-factor 2 --partitions 3 --topic KafkaTest
--create | 表示建立 |
--zookeeper | 表示ZK地址,可以傳遞多個,用逗號分隔 --zookeeper IP:PORT,IP:PORT,IP:PORT/kafka |
--replication-factor | 表示副本數量,這裏的數量是包含Leader副本和Follower副本,副本數量不能超過代理數量 |
--partitions | 表示主題的分區數量,必須傳遞該參數。Kafka的生產者和消費者采用多線程並行對主題的消息進行處理,每個線程處理一個分區,分區越多吞吐量就會越大,但是分區越多也意味著需要打開更多的文件句柄數量,這樣也會帶來一些開銷。 |
--topic | 表示主題名稱 |
在Zookeeper中可以看到如下信息
刪除主題
刪除有兩種方式手動和自動
手動方式需要刪除各個節點日誌路徑下的該主題所有分區,並且刪除zookeeper上/brokers/topics和/config/topics下的對應主題節點
自動刪除就是通過腳本來完成,同時需要配置服務器配置文件中的delete.topic.enable=true,默認為false也就是說通過命令刪除主題只會刪除ZK中的節點,日誌文件不會刪除需要手動清理,如果配置為true,則會自動刪除日誌文件。
kafka-topics.sh --delete --zookeeper 172.16.48.171:2181/kafka --topic KafkaTest
下面的兩句話就是說該主題標記為刪除/admin/delete_topics節點下。實際數據沒有影響因為該參數沒有設置為true。
查看主題
# 列出所有主題 kafka-topics.sh --list --zookeeper 172.16.48.171:2181/kafka
下面是從ZK中看到的所有主題
# 查看所有主題信息 kafka-topics.sh --describe --zookeeper 172.16.48.171:2181/kafka
# 查看特定主題信息 kafka-topics.sh --describe --zookeeper 172.16.48.171:2181/kafka --topic BBB
Replicas:是AR列表,表示副本分布在哪些代理上,且該列表第一個元素就是Leader副本所在代理
ISR:該列表是顯示已經同步的副本集合,這個列表的副本都是存活的
# 通過--describe 和 --under-replicated-partitions 可以查看正在同步的主題或者同步可能發生異常, # 也就是ISR列表長度小於AR列表,如果一切正常則不會返回任何東西,也可以通過 --tipic 指定具體主題 kafka-topics.sh --describe --zookeeper 172.16.48.171:2181/kafka --under-replicated-partitions
# 查看哪些主題建立時使用了單獨的配置 kafka-topics.sh --describe --zookeeper 172.16.48.171:2181/kafka --topics-with-overrides
這裏只有一個內部主題__comsumer_offsets使用了非配置文件中的設置
Kafka(六)Kafka級別操作