1.压测
kafka官方自带压力测试脚本:kafka-consumer-pref-test.sh kafka-preducer-pref-test.sh
kafka压测时,可以查看到哪个地方出现了瓶颈(CPU、内存、网络IO),一般是网络IO达到瓶颈。
消费能力测试:
bin/kafka-consumer-pref-test.sh \
--zookeeper hadoop1:2181 \
--topic test \
--fetch-size 10000 \
--messages 110000000 \
--threads 1
--fetch-size 指定每次fetch的数据大小
--messages 指定总共要消费的消息量
--thread 线程数
2.分区数
1)创建一个只有一个分区的topic
2)测试这个topic的Producer吞吐量和Consumer吞吐量
3)假设他们的值分别为tp和c,单位可以是mb/s
4)然后假设总的目标吞吐量是tt,那么分区数=tt/min(tp,tc)
假如Producer的吞吐量=20m/s,Consumer的吞吐量=50m/s。期望吞吐量100m/s
分区数=100/20=5个分区
分区一般设置为3-10个(取5)。一个Topic中的分区个数最好是消费者组中消费者个数的整数倍。方便消费者均匀的读数据。
3.副本数
一般我们设置成2个或3个,很多企业设置为2个。
副本的优势:提高可靠性。
副本的劣势:增加了网络IO传输。
4.kafka节点的数量
原则:kafka的生产能力不能大于消费能力
kafka的机器数量(经验公式)=2*(峰值速度m/s*副本数/100)+1
比如压力测试写入(生产)速度为10m/s每台,峰值为50m/s,副本数为2
kafka节点数量=2*(50*2/100)+1=3台。
5.topic个数
一般多少日志类型就有多少个topic,也有对日志类型进行合并的。
6.kafka中数据量计算
每天总数据量100G,每天产生1亿条数据,10000万/24/60/60=1150条/每秒
平均每秒:1150条
低谷每秒:50条
高峰每秒=1150*(2-20倍)=2300-23000(取10000条)
每秒多少数据量:2m-20m 10000*1k=10m
每条日志大小:0.5-2k(取1k)
7.kafka的硬盘大小
每天的数据量100G*2个副本*3天/70%=600G/0.7=900G
相当于预留了30%
8.日志保存时间
默认为7天,生产环境建议3天。
9.kafka监控
开启监控器:kafkamanager、kafkamonitor