9-kafka topic管理

1、建立topic

使用命令行手動或者向一個不存在的topic發送(生產)消息時都會新建立一個topic 
向一個不存在的topic發送(生產)消息時新建立的topic時,其採用爲默認的topic-config配置以及server.properties中的topic的配置。html

使用命令行手動建立一個topic可使用 –config 選項配合topic-config配置中的信息來覆蓋默認配置或者使用–delete-config來恢復默認配置。apache

bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 1 --replication-factor 2 --config max.message.bytes=64000 --config flush.messages=1

主要參數說明

1. partitions分區數

(1). partitions :分區數,控制topic將分片成多少個log。能夠顯示指定,若是不指定則會使用broker(server.properties)中的num.partitions配置的數量 
(2). 雖然增長分區數能夠提供kafka集羣的吞吐量、可是過多的分區數或者或是單臺服務器上的分區數過多,會增長不可用及延遲的風險。由於多的分區數,意味着須要打開更多的文件句柄、增長點到點的延時、增長客戶端的內存消耗。 
(3). 分區數也限制了consumer的並行度,即限制了並行consumer消息的線程數不能大於分區數 
(4). 分區數也限制了producer發送消息是指定的分區。如建立topic時分區設置爲1,producer發送消息時經過自定義的分區方法指定分區爲2或以上的數都會出錯的;這種狀況能夠經過alter –partitions 來增長分區數。bash

2. replication-factor副本

1 . replication factor 控制消息保存在幾個broker(服務器)上,通常狀況下等於broker的個數。 
2. 若是沒有在建立時顯示指定或經過API向一個不存在的topic生產消息時會使用broker(server.properties)中的default.replication.factor配置的數量服務器

2、查看topic屬性

bin/kafka-topics.sh --zookeeper zk1:2181 --describe --topic topicname

結果說明:spa

第一行,列出了topic的名稱,分區數(PartitionCount),副本數(ReplicationFactor)以及其餘的配置(Config.s) 
Leader:1 表示爲作爲讀寫的broker的編號 
Replicas:表示該topic的每一個分區在那些borker中保存 
Isr:表示當前有效的broker, Isr是Replicas的子集命令行

3、修改topic

增長分區數

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic my_topic_name--partitions 40

增長配置

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic my_topic_name --config flush.messages=1

刪除配置

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic my_topic_name --delete-config flush.messages=1

 4、刪除topic

目前刪除操做在默認狀況下只是打上一個刪除的標記,在從新啓動kafka 後才刪除。若是須要當即刪除,則須要在server.properties中配置線程

delete.topic.enable=true
bin/kafka-topics.sh --zookeeper zk_host:port --delete --topic my_topic_name
相關文章
相關標籤/搜索