環(huán)境準備
- Kafka
版本:kafka_2.10-0.10.2.0(2.10表示Scala版本 0.10.2.0表示Kafka版本)
官方下載地址:http://kafka.apache.org/downloads - Zookeeper
版本:zookeeper-3.4.13
官方下載地址:http://zookeeper.apache.org/releases.html - JDK
版本:jdk1.8.0_131
官方下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html - 虛擬機
A:192.168.1.1
B:192.168.1.2
C:192.168.1.3
安裝步驟
一:配置JDK和環(huán)境變量
打開當前用戶環(huán)境變量文件
vi ~/.bash_profile // 這里以當前用戶為例
配置當前用戶環(huán)境變量
export JAVA_HOME=/home/work/services/jdk1.8.0_131
export PATH=${JAVA_HOME}/bin:${PATH}
重新加載當前用戶環(huán)境變量文件
source ~/.bash_profile
驗證
java -version
二:搭建Zookeeper集群
以機器A為例
解壓包
cd /home/work/dcs // 切換到下載目錄
tar -zxvf zookeeper-3.4.13.tar.gz // 解壓包
創(chuàng)建日志文件目錄和數(shù)據(jù)文件目錄
mkdir ./zookeeper-3.4.13/logs // 日志存放目錄
mkdir ./zookeeper-3.4.13/data // 數(shù)據(jù)存放目錄
打開配置文件
cd zookeeper-3.4.13/conf // 切換到配置目錄
cp zoo_sample.cfg zoo.cfg // 根據(jù)樣例配置文件復(fù)制出一個新的配置文件
vi zoo.cfg
修改配置文件
// 修改部分
dataDir=/home/work/dcs/zookeeper-3.4.13/data // 修改數(shù)據(jù)目錄
// 添加部分
dataLogDir=/home/work/dcs/zookeeper-3.4.13/logs // 增加日志目錄配置
server.0=192.168.1.1:2888:3888
server.1=192.168.1.2:2888:3888
server.2=192.168.1.3:2888:3888
新建myid文件
cd zookeeper-3.4.13/data // 切換到data目錄
echo "0" > myid // id內(nèi)容與上方server.*中的*對應(yīng)
啟動和關(guān)閉
// 啟動
./bin/zkServer.sh start // 啟動
// 關(guān)閉
./bin/zkServer.sh stop // 關(guān)閉
機器B、C配置和A一樣
三:搭建Kafka集群
以機器A為例
解壓包
cd /home/work/dcs // 切換到下載目錄
tar -zxvf kafka_2.10-0.10.2.0.tgz // 解壓包
創(chuàng)建數(shù)據(jù)日志文件目錄
mkdir ./kafka_2.10-0.10.2.0/data // 數(shù)據(jù)日志存放目錄
打開配置文件
cd kafka_2.10-0.10.2.0/config // 切換到配置文件目錄
vi server.properties // 打開配置文件
修改配置文件
// 修改部分(A:192.168.1.1)
log.dirs=/home/work/dcs/kafka_2.10-0.10.2.0/data // 修改數(shù)據(jù)日志目錄
broker.id=0 // 集群中保證唯一
listeners=PLAINTEXT://192.168.1.1:9092
advertised.listeners=PLAINTEXT://192.168.1.1:9092
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 // zookeeper的地址
// 修改部分(B:192.168.1.2)
log.dirs=/home/work/dcs/kafka_2.10-0.10.2.0/data // 修改數(shù)據(jù)日志目錄
broker.id=1 // 集群中保證唯一
listeners=PLAINTEXT://192.168.1.2:9092
advertised.listeners=PLAINTEXT://192.168.1.2:9092
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 // zookeeper的地址
// 修改部分(C:192.168.1.3)
log.dirs=/home/work/dcs/kafka_2.10-0.10.2.0/data // 修改數(shù)據(jù)日志目錄
broker.id=2 // 集群中保證唯一
listeners=PLAINTEXT://192.168.1.3:9092
advertised.listeners=PLAINTEXT://192.168.1.3:9092
zookeeper.connect=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 // zookeeper的地址
啟動和關(guān)閉
// 啟動
./bin/kafka-server-start.sh config/server.properties // 啟動-常規(guī)模式
nohup ./bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 & // 啟動-守護進程模式
// 關(guān)閉
./bin/kafka-server-stop.sh // 關(guān)閉
機器B、C配置和A一樣
驗證
jps // 檢驗進程是否存在
四:測試
// 創(chuàng)建topic
sh kafka-topics.sh --create --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --replication-factor 1 --partitions 3 --topic test
// 查詢topic list
sh kafka-topics.sh --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --list
// 查詢某topic詳情
sh kafka-topics.sh --zookeeper 10.101.22.182:8081,10.101.22.182:8082,10.101.22.182:8083 --describe --topic test
// 模擬客戶端生產(chǎn)
bin/kafka-console-producer.sh --broker-list 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --topic test
// 模擬客戶端訂閱
sh kafka-console-consumer.sh --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --topic test --from-beginning
// 刪除topic
sh kafka-topics.sh --delete --zookeeper 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --topic test
五:注意事項
- 啟動Zookeeper之前,確保機器安裝了JDK
- 開啟Kafka之前必須啟動所有的Zookeeper
- 啟動Kafka集群時,最好使用守護進程模式,否則終端退出時,程序也會自動關(guān)閉