kafka安裝

weixin_34054866發表於2017-09-10

kafka叢集部署以及java客戶端測試

本文主要講述本人的叢集部署kafka過程以及遇到的問題:

其中:kafka版本為:kafka_2.10,zookeeper版本為:zookeeper-3.4.8,jdk-8u101-linux-x64

一 kafka以及zookeeper安裝以及環境配置

二 zookeeper叢集配置以及測試

三 kafka叢集配置以及測試

四 java客戶端生產與消費測試


一  kafka以及zookeeper安裝以及環境配置*

系統環境:CentOS 6.5

伺服器三臺:192.168.1.1,192.168.1.2,192.168.1.3

jdk下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

zookeeper下載地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

kafka下載地址:http://kafka.apache.org/downloads

1.jdk安裝

cmd:rpm -ivh jdk-8u101-linux-x64.rpm

安裝完畢:java -version顯示如下資訊即安裝成功:

java version "1.8.0_101"

Java(TM) SE Runtime Environment (build 1.8.0_101-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

2.zookeeper安裝

將下載的zookeeper-3.4.8.tar.gz解壓,同時將zookeeper放入usr/local下面

cmd:unzip zookeeper-3.4.8.tar.gz

cmd:mv zookeeper-3.4.8  zookeeper

cmd:mv zookeeper /usr/local

3.kafka安裝

將下載的kafka_2.10-0.10.0.0.tgz解壓安裝,同時將zookeeper放入usr/local下面

cmd:unzip kafka_2.10-0.10.0.0.tgz

cmd:mv kafka_2.10-0.10.0.0 kafka

cmd:mv kafka /usr/local

二 zookeeper叢集配置以及測試

1.由於kafka必須依賴zookeeper進行管理自身的broker,offset,producer,comsumer等,所以在安裝部署kafka之前必須先部署zookeeeper,雖然kafka也自帶了zookeeper,不過本人這裡還是自己獨立使用的zookeeper

首先進入上面已經解壓好的zookeeper目錄:

cmd:cd /usr/local/zookeeper

修改配置檔案:cd conf

cmd:cp zoo_sample.cfg zoo.cfg

cmd:vi zoo.cfg

# The number of milliseconds of each

ticktickTime=2000

# synchronization phase can take

# The number of ticks that can pass between

syncLimit=5

# the directory where the snapshot is stored.

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/logs

# the port at which the clients will connect

clientPort=2181

server.0=192.168.1.1:4001:4002

server.1=192.168.1.2:4001:4002

server.2=192.168.1.3:4001:4002

2.以上就是zookeeper的配置檔案,server.0,1,2位三個伺服器的地址以及埠,首先得確保這三臺伺服器之間是互通的,同時4001以及4002埠也都是開放的。另外4001表示這三臺伺服器之間通訊使用的埠,4002則是伺服器之間選舉使用的埠,當有一臺伺服器down以後就會時候此埠進行選取新的leader。

3.最重要的一步:

分別在三臺伺服器的dataDir路徑下建立一個myid的檔案(本例的dataDir地址為:/usr/local/zookeeper/data),檔案的內容為zookeeper階段的編號,例如:

192.168.1.1這臺伺服器上的檔案內容為0,其餘的分別是1,2。

cmd:cd /usr/local/zookeeper/data

cmd:echo 0 > myid

cmd:cat myid

若顯示0即成功,同時另外兩臺伺服器上配置也如此,只是修改myid裡的內容分別為1與2即可。

4.啟動叢集伺服器:

啟動三臺伺服器上的zookeeper服務:

cmd:bin/zkService.sh start

全都啟動以後檢視狀況:

cmd:bin/zkService.sh status

顯示如下:

ZooKeeper JMX enabled by default

Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg

Mode: follower

其中Mode表示node的狀態,會有兩個follower以及一個leader,此時的server1位leader,為了測試選舉,將server1的服務停止:

cmd:bin/zkService.sh stop

再次檢視伺服器狀態,就可以看到新的leader已經更換。

此時zookeeper叢集已經搭建OK

三 kafka叢集配置以及測試

1.由於是三個伺服器,因此這裡會存在三個broker,分別是0,1,2,對應的伺服器為:192.168.1.1,192.168.1.2,192.168.1.3,因此在建立分割槽的時候會實用三個分割槽,如下是安裝配置步驟:

1.首先要修改kakfa的配置檔案

cmd:cd /use/local/kafka/config

cmd:vi server.properties

#此Broker的ID,叢集中每個Broker的ID不可相同

broker.id=0(此處三個伺服器分別填寫0,1,2 請不要寫重了)

#監聽器,埠號與port一致即可

listeners=PLAINTEXT://:9092

#Broker的Hostname,填主機IP即可

advertised.host.name=192.168.1.1(如果要kafka遠端訪問,此處必填,否則只能區域網訪問kafka)

#進行IO的執行緒數,應大於主機磁碟數

num.io.threads=8

#訊息檔案儲存的路徑

log.dirs=/usr/local/kafka/kafka-logs

#訊息檔案清理週期,即清理x小時前的訊息記錄

log.retention.hours=168

#每個Topic預設的分割槽數,一般在建立Topic時都會指定分割槽數,所以這個配成1就行了

num.partitions=1

#Zookeeper連線串,此處填寫上一節中安裝的三個zk節點的ip和埠即可

zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181

2.接下來分別啟動三個伺服器上的kafka:

cmd:bin/kafka-server-start.sh config/server.properties &

沒有報錯即啟動成功

3.然後建立topic

bin/kafka-topics.sh –create –zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 –replication-factor 3 –partitions 3 –topic test

檢視Topic的狀態:

bin/kafka-topics.sh –describe –zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 –topic test

輸出:

Topic:test  PartitionCount:3      ReplicationFactor:3    Configs:

Topic: test Partition: 0    Leader: 1      Replicas: 1,2,0 Isr: 2,0,1

Topic: test Partition: 1    Leader: 2      Replicas: 2,0,1 Isr: 2,0,1

Topic: test Partition: 2    Leader: 3      Replicas: 0,1,2 Isr: 2,0,1

簡單測試:

生產者:

bin/kafka-console-producer.sh –broker-list 192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092 –topic test

消費者:

bin/kafka-console-consumer.sh –zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 –topic test –from-beginning

此時在生產者控制檯輸入:hello world

消費者正常顯示:hello world

如此叢集就搭建完畢,剩下的就是利用java客戶端進行遠端測試。

四 java客戶端生產與消費測試

本人直接使用的lib包的方式進行測試的,並非maven。如下是本人的lib包

6447172-81ea38a9afa7cc95.png

Java maven工程事例

https://pan.baidu.com/s/1dFs4EIH      提取密碼:5hgy

相關文章