用好kafka,你不得不知的那些工具

JAVA旭陽發表於2023-05-19

前言

工欲善其事,必先利其器。本文主要分享一下訊息中介軟體kafka安裝部署的過程,以及我平時在工作中針對kafka用的一些客戶端工具和監控工具。

kafka部署架構

一個kafka叢集由多個kafka broker組成,每個broker將自己的後設資料資訊註冊到zookeeper中,透過zookeeper關聯形成一個叢集。

prettyZoo客戶端

既然kafka依賴zookeeper,我難免就需要看看zookeeper中究竟儲存了kafka的哪些資料,這邊介紹一款高顏值的客戶端工具prettyZooPrettyZoo是一款基於Apache CuratorJavaFX 實現的 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叢集部署

  1. 上傳安裝包
  2. 移動到指定資料夾
mv zookeeper-3.4.6.tar.gz /opt/apps/
  1. 解壓
tar -zxvf zookeeper-3.4.6.tar.gz
  1. 修改配置檔案
  • 進入配置檔案目錄
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
  1. 建立資料目錄
mkdir -p /opt/apps/data/zkdata
  1. 生成一個 myid 檔案,內容為它的id, 表示是哪個節點。
echo 1 > /opt/apps/data/zkdata/myid
  1. 配置環境變數
vi /etc/profile 

#ZOOKEEPER_HOME 
export ZOOKEEPER_HOME=/opt/apps/zookeeper-3.4.6 
export PATH=$PATH:$ZOOKEEPER_HOME/bin 

source /etc/profile
  1. 在其他幾個節點,即hadoop2, hadoop3上重複上面的步驟,但是myid檔案的內容有所區別,分別是對應的id。
echo 2 > /opt/apps/data/zkdata/myid
echo 3 > /opt/apps/data/zkdata/myid
  1. 啟停叢集
bin/zkServer.sh start zk 服務啟動 
bin/zkServer.sh status zk 檢視服務狀態
bin/zkServer.sh stop zk 停止服務

二、kafka叢集部署

  1. 官方下載地址:http://kafka.apache.org/downloads.html
  2. 上傳安裝包, 移動到指定資料夾
mv kafka_2.11-2.2.2.tgz /opt/apps/
  1. 解壓
tar -zxvf kafka_2.11-2.2.2.tgz
  1. 修改配置檔案
  • 進入配置檔案目錄
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
  1. 配置環境變數
vi /etc/profile 

export KAFKA_HOME=/opt/apps/kafka_2.11-2.2.2 
export PATH=$PATH:$KAFKA_HOME/bin 

source /etc/profile
  1. 在不同的節點上重複上面的步驟,但是需要修改配置檔案server.properties中的broker.id
# broker.id標記是哪個kafka節點,不能重複
broker.id=1 
broker.id=2
  1. 啟停叢集
# 啟動叢集
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旭陽】交流學習!

相關文章