前言
工欲善其事,必先利其器。本文主要分享一下訊息中介軟體kafka安裝部署的過程,以及我平時在工作中針對kafka用的一些客戶端工具和監控工具。
kafka部署架構
一個kafka叢集由多個kafka broker
組成,每個broker
將自己的後設資料資訊註冊到zookeeper
中,透過zookeeper
關聯形成一個叢集。
prettyZoo客戶端
既然kafka
依賴zookeeper
,我難免就需要看看zookeeper
中究竟儲存了kafka
的哪些資料,這邊介紹一款高顏值的客戶端工具prettyZoo
。PrettyZoo
是一款基於Apache Curator
和 JavaFX
實現的 Zookeeper
圖形化管理客戶端,使用非常簡單。
下載地址: https://github.com/vran-dev/PrettyZoo
- 連線
- 介面化操作
zookeeper
小tips: kafka
部署時配置檔案中配置zookeeper
地址的時候,可以採用如下的方式,帶上目錄,比如xxxx:2181/kafka
或者xxxx:2181/kafka1
,可以避免衝突。
#配置連線 Zookeeper 叢集地址(在 zk 根目錄下建立/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/ka
fka
kafka Tool客戶端
Kafka Tool
是一個用於管理和使用Apache Kafka
叢集的GUI
應用程式。 Kafka Tool
提供了一個較為直觀的UI可讓使用者快速檢視Kafka
叢集中的物件以及儲存在topic
中的訊息,提供了一些專門面向開發人員和管理員的功能。
下載地址: https://www.kafkatool.com/index.html
kafka監控工具
kafka
自身並沒有繼承監控管理系統,因此對 kafka
的監控管理比較不便,好在有大量的第三方監控管理系統來使用,這裡介紹一款優秀的監控工具Kafka Eagle
,可以用監控 Kafka
叢集的整體執行情況。
下載地址:https://www.kafka-eagle.org/
,部署也很簡單,根據官方文件一步一步來即可。
注意,kafka需要開啟JMX埠,即修改kafka
的啟動命令檔案kafka-server-start.sh
,如下圖:
kafka叢集部署
一、zookeeper叢集部署
- 上傳安裝包
- 移動到指定資料夾
mv zookeeper-3.4.6.tar.gz /opt/apps/
- 解壓
tar -zxvf zookeeper-3.4.6.tar.gz
- 修改配置檔案
- 進入配置檔案目錄
cd /opt/apps/zookeeper-3.4.6/conf
- 修改配置檔名稱
mv zoo_sample.cfg zoo.cfg
- 編輯配置檔案
vi zoo.cfg
## zk資料儲存位置
dataDir=/opt/apps/data/zkdata
## 叢集配置, hadoop1、hadoop2、hadoop3是主機名,後面是埠,沒有被佔用即可
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
- 建立資料目錄
mkdir -p /opt/apps/data/zkdata
- 生成一個
myid
檔案,內容為它的id
, 表示是哪個節點。
echo 1 > /opt/apps/data/zkdata/myid
- 配置環境變數
vi /etc/profile
#ZOOKEEPER_HOME
export ZOOKEEPER_HOME=/opt/apps/zookeeper-3.4.6
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile
- 在其他幾個節點,即
hadoop2
,hadoop3
上重複上面的步驟,但是myid檔案的內容有所區別,分別是對應的id。
echo 2 > /opt/apps/data/zkdata/myid
echo 3 > /opt/apps/data/zkdata/myid
- 啟停叢集
bin/zkServer.sh start zk 服務啟動
bin/zkServer.sh status zk 檢視服務狀態
bin/zkServer.sh stop zk 停止服務
二、kafka叢集部署
- 官方下載地址:
http://kafka.apache.org/downloads.html
- 上傳安裝包, 移動到指定資料夾
mv kafka_2.11-2.2.2.tgz /opt/apps/
- 解壓
tar -zxvf kafka_2.11-2.2.2.tgz
- 修改配置檔案
- 進入配置檔案目錄
cd /opt/apps/kafka_2.11-2.2.2/config
- 編輯配置檔案
vi server.properties
#為依次增長的:0、1、2、3、4,叢集中唯一 id
broker.id=0
#資料儲存的⽬錄
log.dirs=/opt/apps/data/kafkadata
#指定 zk 叢集地址,注意這裡加了一個目錄
zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181/kafka
其他的配置內容說明如下:
#broker 的全域性唯一編號,不能重複,只能是數字。
broker.id=0
#處理網路請求的執行緒數量
num.network.threads=3
#用來處理磁碟 IO 的執行緒數量
num.io.threads=8
#傳送套接字的緩衝區大小
socket.send.buffer.bytes=102400
#接收套接字的緩衝區大小
socket.receive.buffer.bytes=102400
#請求套接字的緩衝區大小
socket.request.max.bytes=104857600
#kafka 執行日誌(資料)存放的路徑,路徑不需要提前建立,kafka 自動幫你建立,可以
配置多個磁碟路徑,路徑與路徑之間可以用","分隔
log.dirs=/opt/module/kafka/datas
#topic 在當前 broker 上的分割槽個數
num.partitions=1
#用來恢復和清理 data 下資料的執行緒數量
num.recovery.threads.per.data.dir=1
# 每個 topic 建立時的副本數,預設時 1 個副本
offsets.topic.replication.factor=1
#segment 檔案保留的最長時間,超時將被刪除
log.retention.hours=168
#每個 segment 檔案的大小,預設最大 1G
log.segment.bytes=1073741824
# 檢查過期資料的時間,預設 5 分鐘檢查一次是否資料過期
log.retention.check.interval.ms=300000
#配置連線 Zookeeper 叢集地址(在 zk 根目錄下建立/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/ka
fka
- 配置環境變數
vi /etc/profile
export KAFKA_HOME=/opt/apps/kafka_2.11-2.2.2
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile
- 在不同的節點上重複上面的步驟,但是需要修改配置檔案
server.properties
中的broker.id
。
# broker.id標記是哪個kafka節點,不能重複
broker.id=1
broker.id=2
- 啟停叢集
# 啟動叢集
bin/kafka-server-start.sh -daemon /opt/apps/kafka_2.11-2.2.2/config/server.properties
# 停止叢集
bin/kafka-server-stop.sh stop
kafka命令列工具
1. 主題命令列操作
- 檢視操作主題命令引數
kafka-topics.sh
- 檢視當前伺服器中的所有
topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --list
- 建立
first topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first
選項說明:
--topic 定義 topic 名
--replication-factor 定義副本數
--partitions 定義分割槽數
- 檢視
first
主題的詳情
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --describe --topic first
- 修改分割槽數(注意:分割槽數只能增加,不能減少)
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --alter --topic first --partitions 3
- 刪除 topic
bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --delete --topic first
2. 生產者命令列操作
- 檢視操作生產者命令引數
kafka-console-producer.sh
- 傳送訊息
bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first
>hello world
>xuyang hello
3. 消費者命令列操作
- 檢視操作消費者命令引數
kafka-console-consumer.sh
- 消費訊息
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first
- 把主題中所有的資料都讀取出來(包括歷史資料)。
bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
總結
本文分享了平時我在工作使用kafka以及zookeeper常用的一些工具,同時分享了kafka叢集的部署,值得一提的是kafka部署配置zookeeper地址的時候,我們可以新增一個路徑,比如hadoop:2181/kafka
這種方式,那麼kafka的後設資料資訊都會放到/kafka
這個目錄下,以防混淆。
歡迎關注個人公眾號【JAVA旭陽】交流學習!