Kraft模式下Kafka脚本的使用

打印 上一主题 下一主题

主题 904|帖子 904|积分 2716

Kafka集群 版本:V3.5.1
名称Node1Node2Node3IP172.29.145.157172.29.145.182172.29.145.183(1)查看Kraft集群中的状态以及Leader节点,投票节点
使用--status可以查看集群选举次数/水位线以及投票节点等
使用--replication可以查看Ledaer和Follower分布
  1. 使用kafka-metadata-quorum.sh
复制代码
./kafka-metadata-quorum.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 describe --replication

./kafka-metadata-quorum.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 describe --status

(2)查看Kraft集群中的Topic
使用--list可以查看所有的topic
使用--describe --topic topicname可以查看指定topic的分区状态和副本同步状态
  1. 使用kafka-topics.sh
复制代码
./kafka-topics.sh --list  --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092

./kafka-topics.sh --describe  --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1

(3)启动与关闭Kraft集群
启动集群时一定需要添加--daemon参数以后台守护进程运行
  1. 使用kafka-server-start.sh
  2. 使用kafka-server-stop.sh
复制代码
./kafka-server-start.sh -daemon ../config/kraft/server.properties
启动后可以使用jps来查看kafka集群是否启动成功

关闭集群也需要加上参数server.properties
./kafka-server-stop.sh ../config/kraft/server.properties
(4)测试集群性能
  1. 使用kafka-producer-perf-test.sh生产数据
  2. 使用kafka-consumer-perf-test.sh消费数据
复制代码
./kafka-producer-perf-test.sh --producer-props bootstrap.servers=172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1 --num-records 1000000 --record-size 4096  --throughput 50000
  1. --topic指定topic
  2. --num-records指定生产者产生的消息数量
  3. --record-size指定一条消息的大小KB为单位
  4. --throughput指定生产者每秒写入的消息数量限制(吞吐量),-1则为不限制
复制代码

反馈的指标是生产者发送了一百万条消息,每秒生产消息15377条(生产速率60MB/s),平均时延394毫秒,后续就是各种时延的分布范围
./kafka-consumer-perf-test.sh --topic test-topic1 --messages 1000000 --fetch-size 40000 --broker-list 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092
  1. 使用--topic指定topic
  2. 使用--messages指定需要消费的消息数量
  3. 使用--fetch-size指定一次获取的消息总大小
  4. 使用broker-list来指定消费的broker
复制代码

反馈的指标是 Kafka集群消费100万条消息用时23秒,消息总大小3906MB,平均每秒消费速率168MB,消息总数量1000015条,每秒消费消息数量43185条
(5)命令行验证生产实时消费
  1. 使用kafka-console-producer.sh实时生产消息
  2. 使用kafka-console-consumer.sh实时消费消息
复制代码
./kafka-console-producer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2

./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2

同时在Kafka管控平台上也能够实时查询到test-topic2上的消息

同时我们也可以指定offset来使消费者从指定offset开始消费,对于生产环境有利于故障恢复
./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2 --partition 1 --offset 2
可以看到由于输入的消息key相同所以消息都分到了partition1上,所以在消费消息时需要指定分区partition1,然后指定offset消息位移量2,就可以读取到offset=2对应的消息3以及之后的所有消息了

(6)查询消费者组信息
  1. 使用kafka-consumer-groups.sh
复制代码
./kafka-consumer-groups.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092  --list

./kafka-consumer-groups.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092  --group perf-consumer-91301 --describe
通过--list查询到消费者组列表再通过--describe查询具体信息

可以看到在test-topic1主题上的partition5和partition0的Lag为18,代表着两个分区还有18条消息没有消费,通过kafka-console-consumer.sh尝试消费partition5的剩余18条消息
./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1 --group perf-consumer-91301
ps:很多很多消息,因为输入的时候一条消息的大小由--record-size决定,设置为4096KB...
此时再通过describe查看消费者组情况看在partition5和partition0上是否还有消息Lag

可以看到消息都消费完了,Lag也已为0,再执行相同的命令只会等待而不会继续输出消息

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表