前言
工欲善其事,必先利其器。本文主要分享一下消息中間件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
這個目錄下,以防混淆。
-
配置
+關注
關注
1文章
189瀏覽量
18458 -
kafka
+關注
關注
0文章
52瀏覽量
5244
發布評論請先 登錄
相關推薦
評論