1 簡介
??kafka 依賴zookeeper,zookeeper 簡稱ZK,集群官方推薦是奇數個server,奇數個最少3個,這樣壞一個還有兩個,可以正常選舉。(官方解釋:對于復制模式,需要最少三個服務器,并且強烈建議您有奇數個服務器。如果只有兩個服務器,那么,如果有一個服務器失敗,則沒有足夠的機器形成多數法定人數。兩個服務器本質上不如單個服務器穩定,因為有兩個單點故障。)
注意事項:
1、 kafka的java環境要統一,小版本號要一致。
2、 如果安裝kafka集群的服務器主機名不是localhost,需要在/etc/hosts文件里填寫集群主機名和IP地址
2 搭建集群并配置集群
2.1 搭建基礎環境
由于zookeeper要依賴java環境,并且之后的Elasticsearch也需要依賴java所以首先需要搭建java1.8的基礎環境。JDK版本為8u172。
2.1.1 下載jdk1.8:
下載地址:
2.1.2 上傳到服務器并解壓
[root@kafka11 opt]#tar –zxvf jdk-8u172-linux-x64.tar.gz
2.1.3 修改環境變量
[root@kafka11 ~]# vim /etc/profile
#jdk1.8
export JAVA_HOME=/opt/jdk1.8.0_172
export JAVA_BIN=/opt/jdk1.8.0_172/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
2.1.4 刷新配置文件
[root@kafka11 ~]# source /etc/profile
2.2 搭建zookeeper集群
版本為:zookeeper3.4.12,官網下地址:
https://archive.apache.org/dist/zookeeper/
2.2.1 配置zookeeper
配置文件模板在$zookeeperhome/conf/zoo_sample.cfg。復制此模版并且改名為zoo.cfg
[root@kafka11 conf]# cp zoo_sample.cfg zoo.cfg
[root@kafka11 conf]# vim zoo.cfg
lientCnxns=200
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/zookeeper/data ##注意此目錄需要手動創建
dataLogDir=/data/zookeeper/logs ##此目錄需要手動創建
clientPort=2181
server.1=10.10.4.11:2888:3888
server.2=10.10.4.12:2888:3888
server.3=10.10.4.13:2888:3888
2.2.2 創建目錄及myid
[root@kafka11 data]# mkdir –p /data/zookeeper/data
[root@kafka11 data]# mkdir –p /data/zookeeper/logs
[root@kafka11 ~]# cd /data/zookeeper/data/
[root@kafka11 data]# echo 1 > myid ##此次注意,要和配置文件里的server.*的*對應
2.2.3 其他節點配置
注意:myid一定要注意,要和配置文件的server后邊對應的數字相同相同
2.2.4 Zookeeper命令
開啟:[root@kafka12 ~]# /data/zookeeper-3.4.12/bin/zkServer.sh start
停止:[root@kafka12 ~]# /data/zookeeper-3.4.12/bin/zkServer.sh stop
查看狀態:[root@kafka12 ~]# /data/zookeeper-3.4.12/bin/zkServer.sh status
使用jps命令查看zookeeper進程
#執行命令jps
20348 Jps
4233 QuorumPeerMain
如果沒有jps命令可以看端口或者進程
2.3 搭建kafka集群
2.3.1 創建目錄并下載安裝軟件
下載地址:版本號為2.11-0.11.0.3
https://archive.apache.org/dist/kafka/0.11.0.3/kafka_2.11-0.11.0.3.tgz
2.3.2 配置kafka(我的配置文件)
[root@kafka11 config]# cat server.properties
#每個server需要單獨配置broker id,如果不配置系統會自動配置。
broker.id=1 ##集群其他服務器需要改動
delete.topic.enable=true
port=9092
host.name=10.10.4.11 ##集群其他服務器需要改動
listeners=PLAINTEXT://:9092
advertised.host.name=10.10.4.11 ##集群其他服務器需要改動
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data/kafka/logs ##此目錄要先創建,不會自動創建。
num.partitions=3 ##分區個數
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=10.10.4.11:2181,10.10.4.12:2181,10.10.4.13:2181
zookeeper.connection.timeout.ms=6000
session.timeout.ms=10s
max.poll.records=100
max.poll.interval.ms=600000
group.initial.rebalance.delay.ms=0
2.3.3 創建目錄
[root@kafka11 config]# mkdir -p /data/kafka/logs
2.3.4 啟動kafka集群
[root@kafka11 config]# cd /data/kafka_2.11-0.11.0.3/bin/
[root@kafka11 bin]# ./kafka-server-start.sh -daemon ../config/server.properties
-daemon參數是kafka后臺運行的參數。
2.3.5 檢查是否啟動
#執行命令jps
20348 Jps
4233 QuorumPeerMain
18991 Kafka
如果沒有jps命令可以看端口或者進程
3 Kafka相關命令
1、kafka啟動命令:
./kafka-server-start.sh -daemon ../config/server.properties
2、kafka查看topic命令:
./kafka-topics.sh --zookeeper 10.10.4.11:2181 --list
3、查看指定topic的詳細:
./kafka-topics.sh --zookeeper 10.10.4.11:2181 --topic test_property --describe
4、創建topic:
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test-ref-7
--replication-factor:指定副本個數
--partitions:指定分區個數
--topic:指定topic名
5、寫入數據:
./kafka-producer-perf-test.sh --num-records 10000000 --topic test-ref-9 --record-size 500 --throughput 100000 --producer-props bootstrap.servers=10.10.4.11:9092,10.10.4.12:9092,10.10.4.13:9092
--num-records:記錄的條數
--topic:指定topic的名字
--record-size:一條記錄大小
--throughput:吞吐大小(自己感覺無用,只是彈屏的多少)
--producer-props bootstrap.servers=10.10.4.11:9092,10.10.4.12:9092,10.10.4.13:9092:指定kafka集群
6、消費數據:
./kafka-consumer-perf-test.sh --messages 10000000 --threads 3 --zookeeper localhost:2181 --num-fetch-threads 3 --topic test-ref-8
--messages:指定消費條目數
--threads:指定線程數
--num-fetch-threads 3:指定消費人數
4 kafka監控工具kafka-manager1.3.3.18安裝使用
4.1 環境要求
Kafka 0.8.. or 0.9.. or 0.10.. or 0.11..
Java 8+
sbt0.13.*
4.2 安裝部署kafka-manager
4.2.1 安裝sbt
[root@kafka11 ~]# curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
[root@kafka11 ~]# mv bintray-sbt-rpm.repo /etc/yum.repos.d/
[root@kafka11 ~]# yum install sbt –y
4.2.2 下載
由于下載編譯網站國內訪問效果不佳在網上找了個編譯好的1.3.3.18版本的可以直接使用
鏈接:https://pan.baidu.com/s/1XRXFEmpS4f7KsT5zaaXfTw 提取碼:pb5g
4.2.3 安裝配置
unzip kafka-manager-1.3.3.18.zip
在解壓后的conf目錄中打開 application.conf文件,修改其中的zookeeper配置信息:
kafka-manager.zkhosts="hadoop4:2181,hadoop5:2181,hadoop6:2181"
##用逗號隔開
4.2.4 指定端口啟動
nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port 9001 &
或者修改配置文件
添加http.port=9001
4.3 使用manager
1、添加一個集群
點擊【Cluster】>【Add Cluster】打開如下添加集群的配置界面:
輸入集群的名字(如Kafka-1)和 Zookeeper 服務器地址(如10.10.4.11:2181)。選擇最接近的Kafka版本(如0.10.1.0)。
注意:如果沒有在 Kafka 中配置過 JMX_PORT,千萬不要選擇第一個復選框。
Enable JMX Polling。如果選擇了該復選框,Kafka-manager 可能會無法啟動。
2、新建主題
點擊【Topic】>【Create】可以方便的創建并配置主題。如下顯示。
5 Kafka監控工具KafkaOffsetMonitor配置及使用
5.1 安裝及配置
1、正常直接去官網下載最新的jar包,上傳到某服務器上,可以直接運行就可以運行起來了:https://github.com/quantifind/KafkaOffsetMonitor/releases
但是在使用過程中有可能會發現頁面反應緩慢或者無法顯示相應內容的情況。據說這是由于jar包中的某些js等文件需要連接到網絡,或者需要翻墻導致的。網上找的一個修改版的KafkaOffsetMonitor對應jar包,可以完全在本地運行,經過測試效果不錯。我已經上傳到我的網盤:鏈接:https://pan.baidu.com/s/1sCZQl6K0zcPGeS54MTVoGw 提取碼:njsd
2、上傳解壓
2、在解壓目錄里創建一個新的腳本
#!/bin/bash
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--zk 10.10.4.11:2181,10.10.4.12:2181,10.10.4.13:2181 \
--port 8088 \
--refresh 5.minutes \
--retain 1.day
--zk localhost:2181——指的是zookeeper的IP和端口號
--port 8088——指的是KafkaOffsetMonitor訪問的端口號,即監控kafka的端口號(當前系統沒有用到的端口號)
--refresh 10.seconds——10秒一刷新
--retain 1.days——http://localhost:8089頁面保持1天
3、然后運行腳本
之后會有提示讓你訪問:IP:8088
5.2 應用(只有在消費的時候可以看到數據)
1、 剛進入界面
2、有一個Visualizations選項卡,點擊其中的Cluster Overview可以查看當前Kafka集群的Broker情況