IT業的小白,最近用了消息對了,研究了下kafka,并且研究了在kafka基礎上進行了二次開發的淘寶rocketMQ,打算寫下安裝與配置環境,和初級demo。有用過的大家一起交流。這個過程參考了frankHui部落格裡的的安裝配置過程。
kafka0.8版本比0.7版本增加了一些功能,先說下0.7版本的單點搭建和配置。
kafka的搭建需要zookeeper的支援,是以如果你的伺服器還沒有安裝zookeeper,請先安裝。
1.去apache官網把kafka7.0版本down下來。這個過程就不詳細說了,百度下kafka就能找到下載下傳位址。将下載下傳下來的kafka上傳到linux上,并解壓。
指令tar -zxvf 檔案名。
2. 接下來就是下載下傳kafka的依賴包和建構kafka的環境。注意,這一步需要伺服器可以上網。具體指令就是在kafka解壓後的一級目錄下,執行兩個指令,分别是
指令 ./sbt update
指令 ./sbt package。
上面的步驟都執行完了,環境算是好了,下面我們要測試下是否能成功運作kafka:
3.啟動zookeeper server:
./bin/zookeeper-server start.sh ../config/zookeeper.properties &
(用&是為了能退出指令行)
4.啟動kafka server:
./bin/kafka-server-start.sh ../config/server.properties &
5. Kafka為我們提供了一個console來做連通性測試,下面我們先運作producer:
./bin/kafka-console-producer.sh --zookeeper localhost:2181 --topic test
這是相當于開啟了一個producer的指令行。指令行的參數我們一會兒再解釋。
6.接下來運作consumer,新啟一個terminal:
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
7.執行完consumer的指令後,你可以在producer的terminal中輸入資訊,馬上在consumer的terminal中就會出現你輸的資訊。有點兒像一個通信用戶端。
如果你能看到7執行了,說明你單機版部署成功了。下面解釋下兩條指令中參數的意思。--zookeeper localhost:2181 這個說明了去連本機2181端口的zookeeper server,--topic test,在kafka裡,消息按topic來區分,我們這裡的topic叫test,是以不管是consumer還是producer都指向了test。
這樣kafka7.0的單點安裝已經結束。叢集安裝和單點相似。具體過程如下:
我們還是按照那kafka單點配置的幾個步驟來做。我們假設server1的IP是192.168.10.11 server2的IP是192.168.10.10:
1.在server1上啟動zookeeper server :
./bin/zookeeper-server-start.sh ../config/zookeeper.properties &
(用&是為了能退出指令行)
2.在server2上啟動kafka服務:
./ bin/kafka-server-start.sh ../config/server.properties &
3.修改kafka配置檔案在server1上找到kafka的config目錄,目前本機的目錄位址為:/application/search/kafkatest/kafka-0.7.2-incubating-src/config。找到server.properties檔案,找到一行“hostname=“。
在等号後邊加上啟動了KAFKA服務的機器的ip,即192.168.10.11
4.server1上啟動producer服務
./bin/kafka-console-producer.sh --zookeeper 192.168.10.11:2181 --topic test
5.運作consumer,
在server1上啟動一個consumer
./ bin/kafka-console-consumer.sh --zookeeper 192.168.10.11:2181 --topic test --from-beginning
在server2啟動一個consumer
./ bin/kafka-console-consumer.sh --zookeeper 192.168.10.11:2181 --topic test --from-beginning
6.運作完consumer的指令後,你可以在producer的terminal中輸入資訊,馬上在兩個consumer的terminal中就會出現你輸的資訊。