kafka如何確定機器數量和topic分區個數


一、Kafka壓力測試

 

創建一個只有1個分區的topic,測試這個topic的producer吞吐量和consumer吞吐量,假設他們的值分別是Tp和Tc,單位可以是MB/s,然后假設總的目標吞吐量是Tt,那么分區數=Tt/max(Tp,Tc)

1Kafka壓測

Kafka官方自帶的腳本,對Kafka進行壓測。Kafka壓測時,可以查看到哪個地方出現了瓶頸CPU,內存,網絡IO)。一般都是網絡IO達到瓶頸。 

kafka-consumer-perf-test.sh
kafka-producer-perf-test.sh

2Kafka Producer壓力測試

1)在/opt/module/kafka/bin目錄下面有這兩個文件。我們來測試一下

[atguigu@hadoop102 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,表示不限流,可測出生產者最大吞吐量。

2Kafka會打印下面的信息

100000 records sent, 95877.277085 records/sec (9.14 MB/sec), 187.68 ms avg latency, 424.00 ms max latency, 155 ms 50th, 411 ms 95th, 423 ms 99th, 424 ms 99.9th.

參數解析本例中一共寫入10w條消息,吞吐量為9.14 MB/sec每次寫入的平均延遲為187.68毫秒,最大的延遲為424.00毫秒。

3Kafka Consumer壓力測試

Consumer的測試,如果這四個指標(IO,CPU,內存,網絡)都不能改變,考慮增加分區數來提升性能。

[atguigu@hadoop102 kafka]$ bin/kafka-consumer-perf-test.sh --broker-list hadoop102:9092,hadoop103:9092,hadoop104:9092 --topic test --fetch-size 10000 --messages 10000000 --threads 1

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec

參數說明:

--zookeeper 指定zookeeper的鏈接信息

--topic 指定topic的名稱

--fetch-size 指定每次fetch的數據的大小

--messages 總共要消費的消息個數

測試結果說明

start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec

2019-02-19 20:29:07:566, 2019-02-19 20:29:12:170, 9.5368, 2.0714, 100010, 21722.4153

開始測試時間,測試結束數據,共消費數據9.5368MB,吞吐量2.0714MB/s,共消費100010條平均每秒消費21722.4153條。

二、Kafka機器數量計算

Kafka機器數量(經驗公式=2*(峰值生產速度*副本數/100+1

先拿到峰值生產速度,再根據設定的副本數,就能預估出需要部署Kafka的數量。

比如我們的峰值生產速度是50M/s。副本數為2

Kafka機器數量=2*50*2/100+ 1=3台


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM