注意kafka的安裝需要依賴Zookeeper集羣 ,所以安裝kafka之前先安裝zookeeper!
zookeeper安裝
- 上傳安裝包
- 解壓
tar -zxvf zookeeper-3.4.6.tar.gz
- 修改配置文件
(1)進入配置文件目錄
cd /usr/apps/zookeeper-3.4.6/conf
(2)修改配置文件名稱
mv zoo_sample.cfg zoo.cfg
(3)編輯配置文件
vi zoo.cfg
dataDir=/usr/apps/data/zkdata
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=linux01:2888:3888
server.2=linux02:2888:3888
server.3=linux03:2888:3888
- 創建數據目錄
mkdir -p /usr/apps/data/zkdata
- 分別在各個節點的數據存儲目錄中,生成一個myid文件,內容爲它的id
echo 1 > /usr/apps/data/zkdata/myid
echo 2 > /usr/apps/data/zkdata/myid
echo 3 > /usr/apps/data/zkdata/myid
- 分發安裝包
scp -r zookeeper-3.4.6 linux02:/usr/apps/ 單獨分發
- 配置環境變量
vi /etc/profile
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/usr/apps/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
注意:還需要分發環境變量
- zookeeper集啓停羣
bin/zkServer.sh start zk服務啓動
bin/zkServer.sh status zk查看服務狀態
bin/zkServer.sh stop zk停止服務
- 腳本啓停
- 腳本啓動
#!/bin/bash
for i in 1 2 3
do
ssh linux0${i} "source /etc/profile;/usr/apps/zookeeper-3.4.6/bin/zkServer.sh $1"
done
安裝kafka集羣
- 上傳安裝包
- 解壓
tar -zxvf kafka_2.11-2.2.2.tgz
- 修改配置文件
- 進入配置文件目錄
cd /usr/apps/kafka_2.11-2.2.2/config
- 編輯配置文件
vi server.properties
#爲依次增長的:0、1、2、3、4,集羣中唯一 id
broker.id=0
#數據存儲的⽬錄
log.dirs=/usr/apps/data/kafkadata
#指定zk集羣地址
zookeeper.connect=lx01:2181,lx02:2181,lx03:2181
- 分發安裝包
for i in {2..3}; do scp -r kafka_2.11-2.2.2 linux0$i:$PWD; done
- 配置環境變量
vi /etc/profile
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/usr/apps/kafka_2.11-2.2.2
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
注意:還需要分發環境變量
- 分別在linux02和linux03上修改配置文件/usr/apps/kafka_2.11-2.2.2/server.properties中的broker.id=1,broker.id=2(broker.id不能重複)
- 啓停集羣(在各個節點上啓動)
bin/kafka-server-start.sh -daemon /usr/apps/kafka_2.11-2.2.2/config/server.properties
啓動集羣
bin/kafka-server-stop.sh stop
shell客戶端操作
創建topic
./kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --create --replication-factor 3 --partitions 3 --topic test
參數解釋:
--replication-factor 副本數量
--partitions 分區數量
--topic topic名稱
查看當前服務器中的所有topic
./kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --list
刪除topic
./kafka-topics.sh --zookeeper linux01:2181,linux02:2181,linux03:2181 --delete --topic test
查看某個topic的詳情
./kafka-topics.sh --zookeper linux01:2181,linux02:2181,linux03:2181 --describe --topic test
修改分區數
/kafka-topics.sh --zookeeper xu01:2181 --alter --topic test --partitions 5
producter
./kafka-console-producer.sh --broker-list xu01:9092 --topic test
>hello word
>kafka
>nihao
Consumer
./kafka-console-consumer.sh --bootstrap-server h1:9092 --from-beginning --topic test
# 指定要消費的分區,和要消費的起始offset
./kafka-console-consumer.sh --bootstrap-server h1:9092,h2:9092,h3:9092 --topic doit14 --offset 2 --partition 0