新版本中:--bootstrap-server localhost:9092 可以替换老版本的 --zookeeper localhost:2181
查找所有的topic
kafka-topics.bat --bootstrap-server localhost:9092 --list
__consumer_offsets(新版本把offset放到一个专门的topic中,老版本是存放在zookeeper里面)
first
testTopic
注意:是新版本把offset放到__consumer_offsets 这个topic中,老版本是存放在zookeeper里面,当消费者消费每消费一条数据的时候,会往__consumer_offsets里面插入一条数据
创建topic : topic名称:first 备份数:1 分区数:3
kafka-topics.bat --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 3 --topic first
当设置的备份数超过 broker数量的时候,如当前broker数为1 ,但是设置 备份数为 3,会报错
Error while executing topic command : Replication factor: 3 larger than available brokers: 1.
[2021-11-12 16:37:29,417] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
(kafka.admin.TopicCommand$)
在日志目录中会创建三个文件,一个分区一个文件
log文件是存放数据的,默认log文件最大只能存放1G的数据
log文件名,代表的是此文件中最小的offset
查看所有topic
kafka-topics.bat --bootstrap-server localhost:9092 --describe --topic first
Topic: first PartitionCount: 3 ReplicationFactor: 1 Configs:
Topic: first Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: first Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: first Partition: 2 Leader: 0 Replicas: 0 Isr: 0
其中 Leader/Replicas/Isr 后面的是 broker id因为,我现在部署的只有一台broker,而且broker.id是配置0
一个分区有一个Leader,此时这里副本数 为 1,所有Replicas 副本只有 Leader
Isr:是用于副本之间的选举用的,当 分区Leader那台所在的服务器挂了,则分区副本 需要进行选举,除了当前 Leader ,靠前的优先选举Leader成功
查看topic执行分区的offset的最大值(--time -1)和最小值(--time -2)
kafka-run-class.bat kafka.tools.GetOffsetShell --topic testTopic --time -1 --broker-list
127.0.0.1:9092 --partitions 0
testTopic:0:16276023
查看所有消费组
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --list
yc-testTopic
查看消费组的消息堆积情况
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group yc-testTopic
Consumer group 'yc-testTopic' has no active members.(我当前的消费者服务被停掉了)
CURRENT-OFFSET:表示当前的offset
LOG-END-OFFSET:表示最大的那个offset
则LAG堆积数量为:LOG-END-OFFSET- CURRENT-OFFSET ,造成这个原因是我把消费者线程给停掉了,生产了1千万多条数据没有被消费
消费指定topic中的数据
kafka-console-consumer.bat --bootstrap-server localhost:9092 testTopic
上述命令没有指定消费组,则会自动创建一个消费组:console-consumer-81506,81506是group.id ,如果不需要自动创建group.id,可以加入-group xxx参数即可
生产者指定topic发送消息
kafka-console-producer.bat --broker-list localhost:9092 --topic first1
当topic first1不存在的时候,会根据kafka中server.properties配置 自动创建一个分区数为1,副本数为1,名为 first1的topic