栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Kafka入门第四课:Kafka节点数、分区数、分区副本数设置及Kafka压力测试

Kafka入门第四课:Kafka节点数、分区数、分区副本数设置及Kafka压力测试

一、分区副本数设置
	由于分区副本仅提供数据冗余的功能,且分区副本数量与集群吐吞量负相关,故冗余度在满足安全要求基础上设置为最小即可。
	故我们不妨将分区副本数设置为2.


二、kafka分区数设置
通过对单个分区的topic进行消费者和生产者的压力测试,得出单个分区所能提供的消费和生产的最大峰值吐吞量。
1、创建只有一个分区的topic。
kafka-topics.sh --create 
--zookeeper Linux001:2181   
--partitions 1   
--replication-factor 2 
--topic test 

2、测试该topic的producer峰值吞吐量Tp
kafka-producer-pref-test.sh 
--producer-props bootstrap.servers=${bootstrap.servers} 
--producer.config ${KAFKA_HOME}/config/producer.properties 
--topic test 
--record-size 900000   (根据你们的业务进行配置)
--num-records 10000000 
--throughput -1 
	--producer-prop参数下还可以额外指定其他键值对,如"acks=1"
	--throughput 代表每秒发多少条消息,-1代表不限流
测试环境测得约为Tp=80MB/s。  

3、测试该topic的consumer峰值吞吐量Tc
kafka-consumer-pref-test.sh 
--broker-list ${bootstrap.servers} 
--consumer.config=${KAFKA_HOME}/config/consumer.properties 
--topic test 
--messages 10000000 
--reporting-interval 1000 
--show-detailed-stats
 测试环境测得约为Tc=90MB/s。

4、计算所需要的topic分区数
假设你需要的目标吞吐量为T,则分区数num=T/min(Tp,Tc)。
分母取最小值表明即使取消费者额生产者的最小吞吐量,只要设置为num的分区数,仍能达到目标吐吞量要求。

假设我们需要的吐吞量为100MB/s,则分区数num=100/min(80,90)=2

由于消费者Flink数量为3台,为保证充分利用flink计算资源,避免flink消费者空转,我们不妨将Kafka的topic分区设置为3。
后续若业务升级再动态扩容topic分区到6个、9个、12个...保持与flink消费者数n:1的关系。
动态扩容topic分区命令:
 kafka-topics.sh --alter 
 --zookeeper ${zookeeper.url}  
 --partitions 6	
 --topic t001 	

三、kafka生产者性能优化测试
我们设置好topic的分区数、分区副本数后,可以使用控制变量的方式来测试,寻找公司集群上各参数的最佳值。
会影响生产端吞吐量的参数:batch.sizelonger.msacks,这些参数都可以在--producer-props参数后。
其他参数还有:压缩格式、网络带宽。

四、kafka消费者性能优化测试
我们设置好topic的分区数、分区副本数后,可以使用控制变量的方式来测试,寻找公司集群上各参数的最佳值。
会影响消费端吞吐量的参数:--fetch-size--threads
其他参数还有:压缩格式、网络带宽。

五、kafka机器节点数量设置
	n=2*(峰值生产速度*副本数/100)+1
	更关注峰值生产速度是为了避免数据在业务层积压。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号