1. 程式人生 > >Kafka(六)Kafka級別操作

Kafka(六)Kafka級別操作

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級別操作