天天看點

Kafka常用指令前言BrokerTopicProducerConsumer總結

前言

本文所有的操作都是在MacOS系統上使用。如果是在Linux作業系統下進行實驗,使用的指令是相同的;如果是在windows作業系統下進行實驗,則需要使用對應的bin/windows目錄下的bat檔案。

Broker

啟動

bin/kafka-server-start.sh --daemon config/server.properties
           

啟動kafka指令加上–daemon,那麼kafka會以守護程序的方式啟動

守護程序(Daemon Process),也就是通常說的 Daemon 程序(精靈程序),是 Linux 中的背景服務程序。它是一個生存期較長的程序,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的事件。

守護程序是個特殊的孤兒程序,這種程序脫離終端,為什麼要脫離終端呢?之是以脫離于終端是為了避免程序被任何終端所産生的資訊所打斷,其在執行過程中的資訊也不在任何終端上顯示。由于在 linux 中,每一個系統與使用者進行交流的界面稱為終端,每一個從此終端開始運作的程序都會依附于這個終端,這個終端就稱為這些程序的控制終端,當控制終端被關閉時,相應的程序都會自動關閉。

 檢視啟動是否成功

jps -l
           

可以看到下圖有三個程序,分别是zookeeper、jps和kafka 

Kafka常用指令前言BrokerTopicProducerConsumer總結

停止

bin/kafka-server-stop.sh config/server.properties
           

啟動多個broker

如果像在同一台伺服器啟動多個broker可以複制多份config/server.propoerties檔案 

Kafka常用指令前言BrokerTopicProducerConsumer總結

這裡我複制了三份server.properties檔案,這樣我可以啟動三個broker。在啟動broker之前,需要先修改server.properties檔案中的三個屬性,broker.id、listeners和log.dirs,保證這三個屬性不同。 

Kafka常用指令前言BrokerTopicProducerConsumer總結

現在就可以啟動三個kafka broker服務了

bin/kafka-server-start.sh --daemon config/server1.properties
bin/kafka-server-start.sh --daemon config/server2.properties
bin/kafka-server-start.sh --daemon config/server3.properties
           

Topic

建立

bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic demo --partitions 10 --replication-factor 3
           

–zookeeper指定zookeeper的位址和端口,–partitions指定partition的數量,–replication-factor指定資料副本的數量。也就是說,如果有100條資料,會被切分成10份,每一份有三個副本,存放在不同的partition裡。 

Kafka常用指令前言BrokerTopicProducerConsumer總結

檢視所有topic清單

bin/kafka-topics.sh --zookeeper localhost:2181 --list
           

檢視指定topic明細

bin/kafka-topics.sh --zookeeper localhost:2181 --desc --topic demo
           

從第一排可以看到topic的名稱,partition數量,副本數量。使用3份副本,就是保證資料的可用性,即使有兩台broker伺服器挂了,也能保證kafka的正常運作。從第二排開始,表格包含了五列,顯示partition的情況,分别表示:topic名稱、partition編号,此partions的leader broker編号,副本存放的broker編号,同步broker編号。因為我們開啟了三個broker服務,對應的broker.id分别為0、1、2,而每個partion有三個副本,是以就有把所有的broker都使用了,隻不過每個partition的leader不同。

Kafka常用指令前言BrokerTopicProducerConsumer總結

下面的demo2,我建立的時候,配置了2個副本,10個partition。可以看出每個partition的3個副本會均衡的,分布在3台broker伺服器上。

bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic demo2 --partitions 10 --replication-factor 2
           
Kafka常用指令前言BrokerTopicProducerConsumer總結

如果讀者還是沒有太明白也沒有關系,我會在後面的文章中詳細介紹partition是如何存放的。

修改

下面指令,增加partion數量,從10個partition增加到20個

bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic demo --partitions 20
           

但是減少partition是不允許的。如果執行配置的partition變少,會抛出一個錯誤,顯示partition數量隻能增加 

Kafka常用指令前言BrokerTopicProducerConsumer總結

删除

删除之前,需要先将server.properties檔案中的配置

delete.topic.enable=true

更改一下,否則執行删除指令不會生效。

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic demo
           
Kafka常用指令前言BrokerTopicProducerConsumer總結

可以看到上面的topic隻是被标記删除。如果該topic還在有資料交換,那麼檢視topic list的時候,會顯示該topic為标記删除。直到沒有用戶端使用該topic,才會真正的被删除。 

Kafka常用指令前言BrokerTopicProducerConsumer總結

Producer

這個比較簡單,執行下面指令就可以生産資料了

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic demo
           

Consumer

同樣地這個也比較簡單,執行下面指令就可以消費資料了

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic demo
           

如果加上from-beginning指定從第一條資料開始消費

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic demo --from-beginning
           

總結

本節主要都是kafka的常用指令,隻有了解到kafka的運作原理,才能真正掌握kafka。除了這些還要一些指令如資料遷移、優化leader、檢視消費組等,會在後面的文章分别講解。