本文主要翻譯自官網安裝部分,并配上自己運作是截圖~~~圖文結合,看起來友善些!
kafka是由LinkedIn開發,主要是用來處理Linkedin的大面積活躍資料流處理(activity stream).
此類的資料經常用來反映網站的一些有用的資訊,比如PV,頁面展示給哪些使用者通路,使用者搜尋什麼關鍵字最多,這類資訊經常被log到檔案裡,然後線下且周期性的去分析這些資料。現在這種使用者活躍資料已經成為網際網路公司重要的一部分,是以必須建構一個更輕量且更精煉的基礎架構
好的,下面進入正題~~~
第一步:下載下傳
去管網下載下傳最新版的kafka包~~
在這裡我們下載下傳 最新版
kafka_2.10-0.8.1.1.tgz
之後運作指令,解壓:
> tar -xzf kafka_2.10-0.8.1.1.tgz
> cd kafka_2.10-0.8.1.1
第二步:啟動服務
這裡需要說一下,因為kafka是運作在zookeeper之上的,是以需要提前安裝zookeeper,如果你沒有安裝呢,也無所謂,在單機環境下,可以用kafka自帶的zookeeper腳本運作~~~
> bin/zookeeper-server-start.sh config/zookeeper.properties
[2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)
...
注意:這裡需要說一下,這裡可能出現一個錯誤
Unrecognized VM option
'+UseCompressedOops'
, 可以去 bin/kafka-run-class.sh中移除相關參數
這是因為 jvm參數中-XX辨別的是實驗性參數,kafka用了很多用來優化運作的jvm參數,而你安裝的 jdk所帶的jvm不一定支援這些參數,比如:-XX:+UseCompressedOops
是以,下圖中的參數删掉~~~

OK~~~之後就可以了!!
現在啟動kafka服務:
bin/kafka-server-start.sh config/server.properties
[2013-04-22 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties)
[2013-04-22 15:01:47,051] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties)
...
不出錯的話,說明啟動成功!
第三步:建立一個topic
讓我們建立一個topic,名字為test,1個partition,1個replica
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
我們運作以下指令檢視是否建立成功:
> bin/kafka-topics.sh --list --zookeeper localhost:2181
test
好的,建立成功!
我們在這裡是手動建立的topic,我們也可以通過配置brokers去釋出消息時,不存在topic時,自動建立tiopic!!
第四步:釋出消息
現在我們可以向kafka叢集發送消息了,kafka自帶有用戶端指令,可以将檔案或者标準輸入流作為消息輸入。預設一行作為一條單獨的消息發送!
我們通過運作producter來通過控制台向伺服器發送消息:
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
好的,我們已經成功向kafka伺服器發送了兩條消息
第五步:啟動消費者consumer
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
This is a message
This is another message
看到了吧,指令成功運作後,馬上就接到了來自kafka伺服器的消息。
如下圖:
第六步:建立多個broker叢集
到第五步,我們隻是建立了單個節點,但是這并不能滿足我們!!我們接下來再建立另外兩個節點,當然,這些節點目前都是在一台電腦上完成的!!
> cp config/server.properties config/server-1.properties
> cp config/server.properties config/server-2.properties
編輯配置檔案如下:
config/server-1.properties:
broker.id=1
port=9093
log.dir=/tmp/kafka-logs-1
config/server-2.properties:
broker.id=2
port=9094
log.dir=/tmp/kafka-logs-2
其中,broker-id是每個節點的惟一的标示~~~
前面,我們已經啟動了,zookeeper服務和server-0節點
接下來,我們就啟動剛剛配置好的兩個節點就好!!
> bin/kafka-server-start.sh config/server-1.properties &
...
> bin/kafka-server-start.sh config/server-2.properties &
...
& 符号的意思是讓服務在背景運作,但是我們在這裡不用 & 為了友善調試!!
我運作的截圖如下:
好的,我們接下來開始,建立topic
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
接下來,檢視以下:
> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
可以看到,節點1是leader , 總共啟動了1,2,0這三個節點~~~
接下來,我們來發送消息:
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-replicated-topic
ok~~~~~
kafka分布式消息隊列,安裝篇就到此為止拉~~~以後,我們會講解相關的API,利用java進行相關的開發!!!
大家,慢慢體會吧~~