數據倉庫 — 07_Kafka的安裝與部署(Kafka命令行操作指令、Kafka集羣羣起腳本、壓力測試、節點數量計算)


歡迎訪問筆者個人技術博客:http://rukihuang.xyz/
學習視頻來源於尚硅谷,視頻鏈接:尚硅谷大數據項目數據倉庫,電商數倉V1.2新版,Respect!

1 Kafka的安裝與配置

  1. kafka_2.11-0.11.0.2.tgz上傳至102機器/opt/software目錄下,並解壓安裝至/opt/module,重命名爲kafka
tar -zxvf kafka_2.11-0.11.0.0.tgz -C /opt/module/
mv kafka_2.11-0.11.0.0/ kafka
  1. /opt/module/kafka創建logs文件夾
mkdir logs
  1. 修改配置文件/opt/module/kafka/config/server.properties
    1. 集羣3個節點的broker.id必須不一樣,hadoop102的爲0,103的爲1,104的爲2
    2. 修改log.dirs=/opt/module/kafka/logs
    3. 放開delete.topic.enable=true,使topic可以被刪除
#broker 的全局唯一編號,不能重複
broker.id=0
#刪除topic 功能使能
delete.topic.enable=true
#處理網絡請求的線程數量
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 運行日誌存放的路徑
log.dirs=/opt/module/kafka/logs
#topic 在當前broker 上的分區個數
num.partitions=1
#用來恢復和清理data 下數據的線程數量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最長時間,超時將被刪除
log.retention.hours=168
#配置連接Zookeeper 集羣地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
  1. 分發至其他機器,/opt/module/kafka/config/server.properties的broker.id必須得改
xsync /opt/module/kafka
  1. 配置環境變量,新增kafka環境變量(另外2個節點的也要手動修改)
vim /etc/profile.d/env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
#使配置文件生效
source /etc/profile.d/env.sh
  1. 單節點啓動腳本(羣起的話,在3個節點挨個執行)(/opt/module/kafka)
bin/kafka-server-start.sh config/server.properties &
  1. 單節點停止腳本(羣停的話,在3個節點挨個之心)(同上)
bin/kafka-server-stop.sh stop

2 Kafka命令行操作

  • 均在/opt/module/kafka目錄下執行

2.1 查看當前服務器中的所有topic

bin/kafka-topics.sh --zookeeper hadoop102:2181 --list

2.2 創建topic

#創建topic_start
bin/kafka-topics.sh --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181 --create --replication-factor 1 --partitions 1 --topic topic_start
#創建topic_event
bin/kafka-topics.sh --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181 --create --replication-factor 1 --partitions 1 --topic topic_event
  • 選項說明:
    • --topic 定義topic 名
    • --replication-factor定義副本數
    • --partitions 定義分區數

2.3 刪除topic

bin/kafka-topics.sh --delete --zookeeper hadoop102:2181,hadoop103:2181,hadoop104:2181 --topic topic_stop
  • 需要server.properties中設置delete.topic.enable=true,否則只是標記刪除或者直接重啓。

2.4 發送消息

bin/kafka-console-producer.sh --broker-list hadoop102:9092 --topic topic_start

2.5 消費消息

bin/kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic topic_start
  • --from-beginning:會把該topic中以往所有的數據都讀取出來。根據業務場景選擇是否增加該配置。

2.6 查看某個topic的詳情

bin/kafka-topics.sh --zookeeper hadoop102:2181 --describe --topic topic_start

3 Kafka羣起腳本

  1. ~/bin目錄下創建kf.sh
#!/bin/bash

case $1 in
"start"){
	for i in hadoop102 hadoop103 hadoop104
		do
			echo --------$i 啓動kafka---------
			ssh $i "/opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
		done
};;
"stop"){
	for i in hadoop102 hadoop103 hadoop104
		do
			echo --------$i 停止kafka---------
			ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh stop"
		done
};;
esac
  1. 增加腳本執行權限
chmod 777 kf.sh
  1. kafka集羣啓動
kf.sh start
  1. kafka集羣停止
kf.sh stop

4 項目經驗——Kafka壓力測試

4.1 Kafka壓測

  • 用Kafka 官方自帶的腳本,對Kafka 進行壓測。Kafka 壓測時,可以查看到哪個地方出現了瓶頸(CPU,內存,網絡IO)。一般都是網絡IO 達到瓶頸。生產和消費的腳本分別爲:
    • kafka-consumer-perf-test.sh
    • kafka-producer-perf-test.sh

4.2 生產者壓測 producer

  • /opt/module/kafka
bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092
  • 說明
    • record-size是一條信息有多大,單位是字節。
    • num-records 是總共發送多少條信息。
    • throughput 是每秒多少條信息,設成-1,表示不限流,可測出生產者最大吞吐量。
  • 結果

在這裏插入圖片描述

4.3 消費者壓測 consumer

  • /opt/module/kafka
bin/kafka-consumer-perf-test.sh --zookeeper hadoop102:2181 --topic test --fetch-size 10000 --messages 10000000 --threads 1
  • 說明
    • --zookeeper 指定zookeeper 的鏈接信息
    • --topic 指定topic 的名稱
    • --fetch-size 指定每次fetch 的數據的大小
    • --messages總共要消費的消息個數
  • 結果

在這裏插入圖片描述

5 項目經驗——Kafka機器數量計算

Kafka 機器數量(經驗公式)=2* (峯值生產速度 * 副本數/100)+1
先拿到峯值生產速度,再根據設定的副本數,就能預估出需要部署Kafka 的數量。
比如我們的峯值生產速度是50M/s。副本數爲2。
Kafka 機器數量=2* (50*2/100)+ 1=3 臺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章