Linux下kafka的配置與使用

1.前言

what?

kafka是一個分布式且基于發布/訂閱的消息系統。

架構圖如下:


概念:

producer:生產者,負責發布消息到kafka

broker:代表一臺或多臺服務器

topic:每條發送到kafka集群的消息都會有一個類別,物理上不同的topic存儲到不同的broker,邏輯上一個topic可能分別存儲在一個或多個broker上,但是生產者或消費者只需要指定topic而無需關心存儲

zookeeper:集群管理

流程:

Producer使用push模式將消息發布到broker,而Consumer使用pull模式從broker訂閱并消費消息。

2.下載kafka

wget http://mirrors.cnnic.cn/apache/kafka/0.10.0.1/kafka_2.10-0.10.0.1.tgz

tar -zxvf kafka_2.10-0.10.0.1.tgz
mv kafka_2.10-0.10.0.1 /usr/local/kafka

3.配置kafka

cd /usr/local/kafka/config

vim zookeeper.properties

#文件中dataDir=/tmp/zookeeper代表zookeeper數據存儲路徑,clientPort=2181代表zookeeper的端口號為:2181,消費者需要監聽的端口

#修改kafka的server配置

vim server.properties

#把listeners行的注釋去掉,這個表示kafka消息隊列的監聽端口,用于生產者監聽使用

#把listeners修改為如下:

listeners=PLAINTEXT://你的ip地址:9092

#倒數第三行 ‘zookeeper.connect=localhost:2181’ 代表連接zookeeper

4.簡單使用

kafka啟動順序:先啟動zookeeper,再啟動kafka server

cd /usr/local/kafka

#啟動zookeeper(窗口1)

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

#啟動kafka(窗口2)

cd /usr/local/kafka

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

#啟動消費者(窗口3)

cd /usr/local/kafka

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

#啟動生產者(窗口4)

cd /usr/local/kafka

bin/kafka-console-producer.sh --broker-list 你的IP地址:9092 --topic test

#隨便寫入消息后回車,這時窗口3的消費者就會立即顯示你寫入的消息

5.遇上的問題:

①Apache kafka: Failed to acquire lock on file .lock in tmp/kafka-logs

解決:

cd ~?

cd tmp

rm -rf kafka-logs

②ERROR Processor got uncaught exception. (kafka.network.Processor)

java.lang.NoClassDefFoundError:?Could?not?initialize?class?kafka.network.RequestChannel$

解決:可能是虛擬機的主機名有問題

vim /etc/sysconfig/network
HOSTNAME=你的IP地址

reboot

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容