天天看點

Apache Kafka安裝配置 一、準備工作二、單節點安裝三、叢集安裝

 一、準備工作

         1)下載下傳安裝jdk-7u65-linux-i586.gz,配置Java環境變量 ,下載下傳位址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html          2)下載下傳Kafka最新版本kafka_2.10-0.8.1.1.tgz,使用指令 tar -xzf kafka_2.10-0.8.1.1.tgz  解壓到你想要的目錄,我這裡使用 /home/hadoop,下載下傳位址: http://kafka.apache.org/downloads.html

二、單節點安裝

        1)Kafka啟動用到Zookeeper,可以使用Kafka安裝包中的腳本啟動一個單例的zookeeper執行個體。             >  cd kafka_2.10-0.8.1.1              >  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)      
...      
啟動Zookeeper成功!      
注:如果發現報Unrecognized VM option 'UseCompressedOops'異常,可以删除bin/kafka-run-class.sh中 -XX: UseCompressedOops      
2)啟動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)
...      
啟動Kafka服務成功!      
3)測試      
以上單節點方式已經安裝就緒,進行如下測試      
1.建立主題(Topic)      
建立一個隻包含一個分區和一個副本主題名為"test"的主題      
> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
      
This is a message      
This is another message      
這裡向叢集發送兩條消息,分别是this is a message和This is another message      
4.接受消息(消費者)      
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning      
This is a message      
This is another message       
可以使用上面指令在多個終端運作,可以接收到所訂閱主題的消息。      

三、叢集安裝

         上述是單節點上的配置過程,下面介紹三個節點叢集環境的配置過程。         1)在多個伺服器上安裝配置獨立的zookeeper,可參考 http://www.blogjava.net/BucketLi/archive/2010/12/21/341268.html              這裡三台伺服器IP分别是:192.168.1.1,192.168.1.2,192.168.1.3. 節點1(192.168.1.1)的配置zoo.cfg如下:                     #autopurge.purgeInterval=1

server.1=192.168.1.1:2888:3888
server.2=192.168.1.2:2888:3888
server.3=192.168.1.3:2888:3888 在zookeeper的bin目錄下分别執行 .zkServer.sh start 啟動zookeeper

       2)上述準備工作中,我們已經在三台伺服器的/home/hadoop/目錄上解壓 kafka_2.10-0.8.1.1.tgz  先對IP為192.168.1.1這台伺服器進行配置,                 根據如下對KAFKA_HOME/config/ server.properties檔案進行修改(KAFKA_HOME為kafka的安裝目錄) :                broker.id=0(每個節點必須唯一)                   log.dir=/ home/hadoop/kafka_2.10-0.8.1.1/logs (手動建立logs目錄)                             zookeeper.connect=192.168.1.1:2181

                192.168.1.2:                              broker.id=1 (每個節點必須唯一)                   log.dir=/ home/hadoop/kafka_2.10-0.8.1.1/logs (手動建立logs目錄)                              zookeeper.connect= 192.168.1.1 :2181

                192.168.1.3:                              broker.id=2 (每個節點必須唯一)                   log.dir=/ home/hadoop/kafka_2.10-0.8.1.1/logs (手動建立logs目錄)                              zookeeper.connect= 192.168.1.1 :2181                                  分别在三台伺服器上執行以下指令啟動kafka                 > cd KAFKA_HOME/bin

                >nohup ./kafka-server-start.sh ../config/server.properties &       3)以上安裝完畢,進行測試                    1.建立主題(Topic)

> bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic aaaa      

                               執行上述指令後将建立 my-replicated-topic主題,其包含三個副本和一個分區

                   2.檢視主題(Topic)                          >  bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic aaaa 

Topic:aaaa PartitionCount:1 ReplicationFactor:3 Configs:
Topic: aaaa Partition: 0 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2

                                               上述指令可以檢視aaaa主題的描述資訊

3.發送消息(生産者)
> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic aaaa
...
my test message 1
my test message 2
^C       
上述指令打開消息生産控制端,可以将輸入的消息發送到aaaa主題,然後使用Ctrl+C打斷。

                    4.接收消息(消費者)                              >  bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic

在控制終端可以檢視到以下資訊:      
...
                 my test message 1
                 my test message 2
                 ^C      

                     5.容錯測試                             >  jps -l| grep kafka

8077 kafka.Kafka
      
> kill -9 8077
      
> bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic aaaa
                  Topic:my-replicated-topic	PartitionCount:1	ReplicationFactor:3	Configs:
	          Topic: my-replicated-topic	Partition: 0	Leader: 2	Replicas: 1,2,0	Isr: 2,0
      
> bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
              ...
              my test message 1
              my test message 2
              ^C      

                        kill掉leader節點後,内部會自動選舉其他節點為leader,消息仍然可以接收。

                                                                                    (完)

繼續閱讀