天天看點

kafka分布式消息隊列----安裝篇

本文主要翻譯自官網安裝部分,并配上自己運作是截圖~~~圖文結合,看起來友善些!

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

是以,下圖中的參數删掉~~~

kafka分布式消息隊列----安裝篇

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伺服器的消息。

如下圖:

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 &
...
      

& 符号的意思是讓服務在背景運作,但是我們在這裡不用 &  為了友善調試!!

我運作的截圖如下:

kafka分布式消息隊列----安裝篇

好的,我們接下來開始,建立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      
kafka分布式消息隊列----安裝篇
kafka分布式消息隊列----安裝篇
kafka分布式消息隊列----安裝篇

ok~~~~~

kafka分布式消息隊列,安裝篇就到此為止拉~~~以後,我們會講解相關的API,利用java進行相關的開發!!!

大家,慢慢體會吧~~