kafka集群部署以及java客戶(hù)端測(cè)試
本文主要講述本人的集群部署kafka過(guò)程以及遇到的問(wèn)題:
其中:kafka版本為:kafka_2.10输枯,zookeeper版本為:zookeeper-3.4.8房维,jdk-8u101-linux-x64
一 kafka以及zookeeper安裝以及環(huán)境配置
二 zookeeper集群配置以及測(cè)試
三 kafka集群配置以及測(cè)試
四 java客戶(hù)端生產(chǎn)與消費(fèi)測(cè)試
一? kafka以及zookeeper安裝以及環(huán)境配置*
系統(tǒng)環(huán)境:CentOS 6.5
服務(wù)器三臺(tái):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解壓,同時(shí)將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解壓安裝,同時(shí)將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集群配置以及測(cè)試
1.由于kafka必須依賴(lài)zookeeper進(jìn)行管理自身的broker,offset,producer,comsumer等,所以在安裝部署kafka之前必須先部署zookeeeper,雖然kafka也自帶了zookeeper琅锻,不過(guò)本人這里還是自己獨(dú)立使用的zookeeper
首先進(jìn)入上面已經(jīng)解壓好的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位三個(gè)服務(wù)器的地址以及端口向胡,首先得確保這三臺(tái)服務(wù)器之間是互通的恼蓬,同時(shí)4001以及4002端口也都是開(kāi)放的。另外4001表示這三臺(tái)服務(wù)器之間通信使用的端口僵芹,4002則是服務(wù)器之間選舉使用的端口处硬,當(dāng)有一臺(tái)服務(wù)器down以后就會(huì)時(shí)候此端口進(jìn)行選取新的leader。
3.最重要的一步:
分別在三臺(tái)服務(wù)器的dataDir路徑下創(chuàng)建一個(gè)myid的文件(本例的dataDir地址為:/usr/local/zookeeper/data)拇派,文件的內(nèi)容為zookeeper階段的編號(hào)荷辕,例如:
192.168.1.1這臺(tái)服務(wù)器上的文件內(nèi)容為0,其余的分別是1,2件豌。
cmd:cd /usr/local/zookeeper/data
cmd:echo 0 > myid
cmd:cat myid
若顯示0即成功疮方,同時(shí)另外兩臺(tái)服務(wù)器上配置也如此,只是修改myid里的內(nèi)容分別為1與2即可茧彤。
4.啟動(dòng)集群服務(wù)器:
啟動(dòng)三臺(tái)服務(wù)器上的zookeeper服務(wù):
cmd:bin/zkService.sh start
全都啟動(dòng)以后查看狀況:
cmd:bin/zkService.sh status
顯示如下:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower
其中Mode表示node的狀態(tài)案站,會(huì)有兩個(gè)follower以及一個(gè)leader,此時(shí)的server1位leader,為了測(cè)試選舉,將server1的服務(wù)停止:
cmd:bin/zkService.sh stop
再次查看服務(wù)器狀態(tài)棘街,就可以看到新的leader已經(jīng)更換蟆盐。
此時(shí)zookeeper集群已經(jīng)搭建OK
三 kafka集群配置以及測(cè)試
1.由于是三個(gè)服務(wù)器,因此這里會(huì)存在三個(gè)broker遭殉,分別是0,1,2石挂,對(duì)應(yīng)的服務(wù)器為:192.168.1.1,192.168.1.2,192.168.1.3,因此在創(chuàng)建分區(qū)的時(shí)候會(huì)實(shí)用三個(gè)分區(qū)险污,如下是安裝配置步驟:
1.首先要修改kakfa的配置文件
cmd:cd /use/local/kafka/config
cmd:vi server.properties
#此Broker的ID痹愚,集群中每個(gè)Broker的ID不可相同
broker.id=0(此處三個(gè)服務(wù)器分別填寫(xiě)0,1,2 請(qǐng)不要寫(xiě)重了)
#監(jiān)聽(tīng)器富岳,端口號(hào)與port一致即可
listeners=PLAINTEXT://:9092
#Broker的Hostname,填主機(jī)IP即可
advertised.host.name=192.168.1.1(如果要kafka遠(yuǎn)程訪問(wèn)拯腮,此處必填窖式,否則只能局域網(wǎng)訪問(wèn)kafka)
#進(jìn)行IO的線(xiàn)程數(shù),應(yīng)大于主機(jī)磁盤(pán)數(shù)
num.io.threads=8
#消息文件存儲(chǔ)的路徑
log.dirs=/usr/local/kafka/kafka-logs
#消息文件清理周期动壤,即清理x小時(shí)前的消息記錄
log.retention.hours=168
#每個(gè)Topic默認(rèn)的分區(qū)數(shù)萝喘,一般在創(chuàng)建Topic時(shí)都會(huì)指定分區(qū)數(shù),所以這個(gè)配成1就行了
num.partitions=1
#Zookeeper連接串琼懊,此處填寫(xiě)上一節(jié)中安裝的三個(gè)zk節(jié)點(diǎn)的ip和端口即可
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181
2.接下來(lái)分別啟動(dòng)三個(gè)服務(wù)器上的kafka:
cmd:bin/kafka-server-start.sh config/server.properties &
沒(méi)有報(bào)錯(cuò)即啟動(dòng)成功
3.然后創(chuàng)建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的狀態(tài):
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
簡(jiǎn)單測(cè)試:
生產(chǎn)者:
bin/kafka-console-producer.sh –broker-list 192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092 –topic test
消費(fèi)者:
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
此時(shí)在生產(chǎn)者控制臺(tái)輸入:hello world
消費(fèi)者正常顯示:hello world
如此集群就搭建完畢阁簸,剩下的就是利用java客戶(hù)端進(jìn)行遠(yuǎn)程測(cè)試。
四 java客戶(hù)端生產(chǎn)與消費(fèi)測(cè)試
本人直接使用的lib包的方式進(jìn)行測(cè)試的哼丈,并非maven启妹。如下是本人的lib包
Java maven工程事例
https://pan.baidu.com/s/1dFs4EIH? ? ? 提取密碼:5hgy