【博学谷学习记录】超强总结,用心分享|Kafka的相关shell命令与基准测试

【博学谷学习记录】超强总结,用心分享|Kafka的相关shell命令与基准测试

一、Kafka的相关shell命令

1.1 创建Topic:kafka-topics.sh --create

./kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --topic test01 --partitions 3 --replication-factor 2
参数介绍:
	(1)执行操作: --create 表示为创建
	(2)连接地址: zookeeper地址 --zookeeper node1:2181,node2:2181,node3:2181
	(3)创建的topic的名字: --topic test01
	(4)topic有多少个分片: --partitions 3 
	(5)每个分片有多少个副本: --replication-factor 2

1.2 查看当前已经建立的Topic:kafka-topics.sh --list

./kafka-topics.sh --list --zookeeper node1:2181,node2:2181,node3:2181

1.3 查看某一个topic的详细信息:./kafka-topics.sh --describe

查看每一个topic的详细信息:
./kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node3:2181

查看某一个topic的详细信息:
./kafka-topics.sh --describe --zookeeper node1:2181,node2:2181,node3:2181 --topic test01

在这里插入图片描述

1.4 修改Topic:./kafka-topics.sh --alter

Topic 仅允许增大分片, 不允许减少分片, 同时也不支持修改副本数量
增大分区:
./kafka-topics.sh --alter --zookeeper node1:2181,node2:2181,node3:2181 --topic test01 --partitions 5

1.5 删除Topic:./kafka-topics.sh --delete

./kafka-topics.sh --delete --zookeeper node1:2181,node2:2181,node3:2181 --topic test01
注意: 
	默认情况下, 删除一个topic 仅仅是标记删除, 主要原因: kafka担心误删数据, 一般需要用户手动删除
	如果想执行删除的时候, 直接将topic完整的删除掉: 此时需要在server.properties 配置中修改一个配置为true
		delete.topic.enable=true
	如果topic中的数据量非常少, 或者说没有任何的数据的时候, 此时topic会自动先执行逻辑删除, 然后在物理删除, 不管是否配置了delete.topic.enable=true

1.6 模拟生产者:./kafka-console-producer.sh --broker-list

./kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test01

在这里插入图片描述

1.7 模拟消费者:./kafka-console-consumer.sh --bootstrap-server

./kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic test01
默认从当前时间开始消费数据, 如果想从头开始消费, 可以添加 --from-beginning 参数即可

在这里插入图片描述

二、Kafka的基准测试

kafka的基准测试:
​主要指的安装完成Kafka集群后, 进行测试操作, 测试其是否承载多大的并发量(读写效率)
官方网站: https://www.kafka.apache.org
注意: 在进行Kafka的基准测试的时候, 受Topic的分片和副本的数量影响会比较大, 一般在测试的时候, 会构建多个topic, 每一个topic设置不同的分片和副本的数量, 比如: 一个设置分片多一些, 副本少一些, 一个设置分片少一些, 副本多一些, 要不设置分片多些副本也多些。

2.1 创建一个Topic

./kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --topic test02 --partitions 6 --replication-factor 1

2.2 测试写入的数据的效率

./kafka-producer-perf-test.sh --topic test02  --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1
属性说明:
--num-records:  发送的总消息量
--throughput: 指定吞吐量(限流)  -1  不限制
--record-size: 每条数据的大小(字节)
--producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1 设置生产者的配置信息(连接地址, 消息确认方案)

写后的结果:
5000000 records sent, 134578.634296 records/sec (128.34 MB/sec), 239.83 ms avg latency, 1524.00 ms max latency, 45 ms 50th, 940 ms 95th, 1269 ms 99th, 1461 ms 99.9th.

需关注的信息:
5000000 records sent :  总计写入了多少条数据
134578.634296 records/sec: 每秒中可以处理多少条数据
128.34 MB/sec: 每秒钟可以处理的数据量是多大

2.3 测试读取数据的效率

./kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test02 --fetch-size 1048576 --messages 5000000

属性: 
--fetch-size 1048576  :  每次从kafka端拉取的数据量
--messages:  测试的总消息量

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
2023-03-30 21:08:26:464, 2023-03-30 21:08:42:373, 4768.3716, 299.7279, 5000000, 314287.5102, 1680181706706, -1680181690797, -0.0000, -0.0030

start.time: 2023-03-30 21:08:26:464  启动时间 
end.time: 2023-03-30 21:08:42:373    结束时间
data.consumed.in.MB: 4768.3716       总大小
MB.sec: 299.7279  每秒中可以处理的大小
data.consumed.in.nMsg: 5000000  总消息量
nMsg.sec: 314287.5102  每秒钟可以处理的数据

2.4 Kafka基准测试总结

假设Kafka的节点数量是无限多的:
topic的分片数量越多, 理论上读写效率越高
topic的副本数量越多, 理论上写入的效率越差
一般可以将分片的数量设置为节点数量的三倍左右, 副本数量为1, 基本上可以测试出最佳性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值