kafka本地單機安裝部署
kafka是一種高吞吐量的分散式釋出訂閱訊息系統,這幾天要上kafka,只在其中的一個節點使用,結合具體的專案實踐在此將kafka的本地安裝部署流程記錄下來與各位同仁分享交流。
準備工作:
上述的檔案除了jdk以外均放在/usr/local/kafka目錄下。
1、安裝jdk,kafka的使用要用到jdk
首先檢查有無jdk:java -version
cd /usr/local/hadoop(本例中我是將jdk的安裝包放到hadoop資料夾下,各位可以依據自己情況)
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
將下載的安裝包上傳到伺服器上的/usr/local/hadoop資料夾下
tar-zxvf jdk-7u79-linux-x64.tar.gz
配置jdk的環境變數:
vim /etc/profile
使其立即生效 source /etc/profile
檢查是否安裝成功:java –version
至此jdk安裝配置成功。
使之立即生效
source /etc/profile
測試zookeeper是否安裝成功
cd /usr/local/zookeeper-3.3.6/bin
./zkServer.sh start
如上圖所示,即為zookeeper安裝配置成功。
3、安裝kafka
cd /usr/local/kafka
wget
tar -zxvf kafka_2.8.0-0.8.0.tar.gz
配置kafka,修改檔案server.properties
cd /usr/local/kafka/kafka_2.8.0-0.8.0/config
vim server.properties
將上圖中的host.name處寫上本地伺服器的IP地址
上圖中的log.dirs結合自己所建的資料夾路徑填寫,沒有嚴格要求
上圖中的紅框處預設為2181埠
配置kafka下zookeeper
mkdir /usr/local/kafka/zookeeper #建立zookeeper目錄
mkdir /usr/local/kafka/log/zookeeper #建立zookeeper日誌目錄
cd /usr/local/kafka/kafka_2.8.0-0.8.0/config
vim zookeeper.properties
上圖中的dataDir和dataLogDir可以依據自己建立的資料夾路徑填寫。
4、建立啟動和關閉kafka指令碼
(1)建立kafka指令碼
vim kafkastart.sh
(2)建立關閉kafka指令碼
vim kafkastop.sh
(3)新增指令碼執行許可權
chmod +x kafkastart.sh
chmod +x kafkastop.sh
(4)設定指令碼開機啟動自動執行
vim /etc/rc.d/rc.local
5、測試kafka
(1)建立主題
cd /usr/local/kafka/kafka_2.8.0-0.8.0/bin
./kafka-create-topic.sh –partition 1 –replica 1 –zookeeper localhost:2181 –topic test
檢查主題是否建立成功
./kafka-list-topic.sh –zookeeper localhost:2181
(2)啟動producer
./kafka-console-producer.sh –broker-list 192.168.18.229:9092 –topic test
(192.168.18.229是本地伺服器IP地址,讀者根據情況填寫)
如上圖所示,輸入hello kafka!後,回車
然後另外開啟一個shell終端
cd /usr/local/kafka/kafka_2.8.0-0.8.0/bin
在此終端下啟動consumer
./kafka-console-consumer.sh –zookeeper localhost:2181 –topic test
由上圖可見,終端1生產者下所輸入的hello kafka!,在終端2下的消費者下顯現,至此kafka的單機安裝部署完成。
(6)關閉kafka
cd /usr/local/kafka
./kafkastop.sh
附:有可能遇到的問題和解決方案
問題1: Failed to acquire lock on file .
解決方案:
這是因為之前已經有kafka程序在執行,可以如下:
通過jps命令檢視程序號,並kill掉,然後重新啟動kafka即問題解決
問題2:BindException: Address already in use
解決方案:
這個有時可以忽略,只要最後成功啟動了kafka就可以,也可以將server.properties下的2181的埠號換一下,這個報錯是因為2181埠被佔用了。