kafka(五):Topic的增刪改查操作
1.建立Topic
bin/kafka-topics.sh --create --topic beifeng1 --zookeeper bigdata.ibeifeng.com:2181/kafka08 --partitions 5 --replication-factor 2
其中:
(1)--replication-factor:副本數目預設不超過3,太多影響網路磁碟io效能(副本數越多,資料越安全,但是不能大於broker的數目)
(2)--partitions:一般為broker服務數目的1--2倍
2.檢視當前kafka叢集中Topic的情況
(1)檢視Topic列表
bin/kafka-topics.sh --list --zookeeper bigdata.ibeifeng.com:2181/kafka08
(2)zk檢視
開啟zk客戶端後
ls /kafka/config/topics
(3)topic資料儲存
由server.properties中log.dirs配置決定
/opt/modules/kafka_2.11-0.10.2.1/data/0
3. 檢視Topic的詳細資訊
bin/kafka-topics.sh --describe --zookeeper bigdata.ibeifeng.com:2181/kafka08
結果:
Topic:beifeng PartitionCount:5 ReplicationFactor:2 Configs: Topic: beifeng Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0 Topic: beifeng Partition: 1 Leader: 0 Replicas: 1,0 Isr: 0 Topic: beifeng Partition: 2 Leader: 0 Replicas: 0,1 Isr: 0 Topic: beifeng Partition: 3 Leader: 0 Replicas: 1,0 Isr: 0 Topic: beifeng Partition: 4 Leader: 0 Replicas: 0,1 Isr: 0 Topic:beifeng0 PartitionCount:1 ReplicationFactor:1 Configs: Topic: beifeng0 Partition: 0 Leader: 0 Replicas: 0 Isr: 0
其中Isr:當broker的leader宕機後,有機會競選的broker的id!
4. 修改Topic資訊
bin/kafka-topics.sh --alter --topic beifeng1 --zookeeper bigdata.ibeifeng.com:2181/kafka08 --partitions 6
注意:不能修改replication-factor,以及只能對partition個數進行增加,不能減少
5. 刪除Topic(簡單的刪除,只是標記刪除)
bin/kafka-topics.sh --delete --topic beifeng1 --zookeeper bigdata.ibeifeng.com:2181/kafka08
預設情況下,刪除是標記刪除,沒有實際刪除這個Topic。
真實刪除這個Topic的兩種方式:
(1)通過delete命令刪除後,手動將本地磁碟以及zk上的相關topic的資訊刪除即可
ls /kafka/brokers/topics
(2)配置server.properties檔案,給定引數delete.topic.enable=true,表示允許進行Topic的刪除
注意:一般來說,topic建立了之後就不要隨意的刪除和修改資訊
6.topic分割槽partition意義
(1)一個分割槽只能讓(一個消費者組中)一條執行緒消費。(同一個分割槽中的資料,是不可能讓兩條執行緒同時消費的)
(2)如果,一個topic有3個分割槽,但是消費者只有一個執行緒,則這個消費者消費這3個分割槽的資料。
(3)分割槽數和消費者執行緒數相等的情況下,消費的速度和效能是最好的。(如果,分割槽數大於執行緒數,則有的執行緒消費多個分割槽的資料;如果執行緒大於分割槽,部分執行緒佔據資源不處理資料,浪費資源)
(4)如果某個topic接收的資料量很大,如何增加處理速度?
-》增加topic的分割槽數(可以直接增加,資料會重新分佈(已經寫入到磁碟的資料不會變動,新來資料會根據重分佈後的hash碼來分佈到新的分割槽中!)
-》增加消費者的執行緒(例如:spark消費程式,增加--num-exe或者exe-core)