Kraft形式下Kafka脚本的运用
Kafka集群 版别:V3.5.1
称号 | Node1 | Node2 | Node3 |
---|---|---|---|
IP | 172.29.145.157 | 172.29.145.182 | 172.29.145.183 |
(1)检查Kraft集群中的状况以及Leader节点,投票节点
运用--status能够检查集群推举次数/水位线以及投票节点等
运用--replication能够检查Ledaer和Follower散布
运用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的分区状况和副本同步状况
运用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参数以后台看护进程运转
运用kafka-server-start.sh
运用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)测验集群功能
运用kafka-producer-perf-test.sh出产数据
运用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
--topic指定topic
--producer.config指定配置文件
--num-records指定出产者发生的音讯数量
--record-size指定一条音讯的巨细KB为单位
--throughput指定出产者每秒写入的音讯数量约束(吞吐量),-1则为不约束
反应的目标是出产者发送了一百万条音讯,每秒出产音讯15377条(出产速率60MB/s),均匀时延394毫秒,后续便是各种时延的散布规模
PS:优化,调优batch-size,增大throughput,指定配置文件,acks恰当调整
如上图显现,推迟降低了
./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
运用--topic指定topic
运用--messages指定需求消费的音讯数量
运用--fetch-size指定一次获取的音讯总巨细
运用broker-list来指定消费的broker
反应的目标是 Kafka集群消费100万条音讯用时23秒,音讯总巨细3906MB,均匀每秒消费速率168MB,音讯总数量1000015条,每秒消费音讯数量43185条
(5)指令行验证出产实时消费
运用kafka-console-producer.sh实时出产音讯
运用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)查询顾客组信息
运用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,再履行相同的指令只会等候而不会持续输出音讯
(7)检查checkpoint,snapshot,log等文件
(1)检查元数据分区Log文件
留意:--cluster-metadata-decoder合适运用在检查__cluster_metadata分区下的log文件
一般数据分区就只需求--files指定即可/opt/kafka/bin/kafka-dump-log.sh --cluster-metadata-decoder --files 00000000000045962075.log
检查Topic分区数据Log文件/opt/kafka/bin/kafka-dump-log.sh --files 00000000000000000033.log --print-data-log
--print-data-log能够检查事务数据的详细信息
假如要检查某个分区的音讯数量就需求 grep -c "payload",留意假如存在log分片的状况,就需求对两个log别离计数然后叠加数量
(2)检查snapshot文件
Snapshot文件是某个快照时刻点的完好元数据状况,存在快照的状况下,kafka会读取最新的snapshot康复到最近的元数据状况,再从快照偏移量开端读取log文件重放快照偏移量之后的操作,这样能够保证仅重放快照之后的改变操作,防止重复处理现已包含在快照中的改变
(3)检查checkpoint文件/opt/kafka/bin/kafka-dump-log.sh --cluster-metadata-decoder --files 00000000000046109500-0000000378.checkpoint