kafka安裝及使用

__顧影自憐發表於2018-04-27

準備

kafka版本: kafka_2.11-1.1.0.tgz

將kafka解壓在opt目錄下(opt為hadoop使用者下的目錄)

tar -zxvf kafka_2.11-1.1.0.tgz  -C opt/

注意,此命令執行條件:我的kafka在hadoop主體目錄下,而opt在hadoop目錄下。


啟動伺服器

解壓好後到,先進入kafka目錄

 cd kafka_2.11-1.1.0

因為zookeeper.properties註釋實在太多,所以我通過grep命令查詢到kafka非註釋的字串,並把它追加到 zk.properties中。

cat zookeeper.properties | grep -v '#'  >> config/zk.properties

zk.properties只需要修改第一行

dataDir=/home/hadoop/zk  #因為zookeeper變更為zk,所以需要在這裡修改一下

啟動zookeeper

bin/zookeeper-server-start.sh config/zk.properties


啟動kafka伺服器(broker)

同zookeeper相同,篩選一下server.properties並把它追加到kafka1.properties中

cat config/server.properties | grep -v '#'  >> config/kafka1.properties
./bin/kafka-server-start.sh config/kafka1.properties


建立一個主題

我們用一個分割槽和一個副本建立一個’cctv1‘的主題

kafka_2.11-1.1.0]$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic cctv1

啟動生產者(producer)

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

在生產者中傳送的訊息,會儲存在broker中,需要消費者接收這些訊息。


啟動消費者

 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic cctv1

#檢視歷史資訊
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic cctv1 --from-beginning

啟動消費者後,便會接受生產者傳送到broker儲存的資訊。



另外,生產者也可以建立主題,只要zookeeper(broker)中沒有這個主題,啟動它就可以建立主題


連線上消費者,立即接收到訊息。



更改埠號


kafka預設埠號為9092,如果想更改埠號,在kafka1.conf中新增程式碼。(出自sever.properties中)

listeners=PLAINTEXT://:9092


補充: zookeeper只能啟動單數,比如1臺 、3臺、7臺等等,不能偶數臺,偶數臺的話假設有兩臺,那麼只有一臺機器再執行,因為如果是偶數的話,選舉出來的管理者有可能兩個zookeeper得到的票數相同,奇數的話就不會出現這個情況

相關文章