创建topic
bin/kafka-topics.sh --create --zookeeper node-01:2181 --replication-factor 4 --partitions 3 --topic test
-
partitions
指定topic分区数。
控制将topic分成多少个log。可以显示指定,如果不指定,会使用server.properties中的num.partitions配置的数量;
虽然增加分区数可以提高kafka集群的吞吐量,但是过多的分区或者单台服务器上的分区数过多,会增加不可用鸡延迟的风险。因为多的分区数,需要打开多的文件句柄、增加点到点的延时、增加客户端的内存消耗;
分区数也限制了consumer的并行度,即限制了并行consumer消息的线程数不能大区分区数;
分区数也限制了producer发送消息是指定的分区。如创建topic时分区设置为1,producer发送消息时通过自定义的分区方法指定分区为2或者以上的数都会出错,这种情况可以通过alter-partitions来增加分区。
-
replication-factor
replication-factor控制消息保存在几个broker(服务器)上,一般情况下小于等于broker的个数;
如果没有在创建时显示指定或者通过API向一个不存在的topic生产消息时会使用server.properties中default.replication.factor配置的数量。
查看所有topic列表
bin/kafka-topics.sh --list --zookeeper node-01:2181
查看指定topic信息
bin/kafka-topics.sh --zookeeper node-01:2181 --describe --topic test
Topic:test PartitionCount:3 ReplicationFactor:2 Configs:
Topic: test Partition: 0 Leader: 0 Replicas: 0,2 Isr: 0,2
Topic: test Partition: 1 Leader: 1 Replicas: 1,0 Isr: 0,1
Topic: test Partition: 2 Leader: 2 Replicas: 2,1 Isr: 2,1
向 topic 生产数据
bin/kafka-console-producer.sh --broker-list node-01:9092 --topic test
消费 topic 的数据
# 消费新数据 bin/kafka-console-consumer.sh --zookeeper node-01:2181 --topic test # 从头开始消费数据 bin/kafka-console-consumer.sh --zookeeper node-01:2181 --topic test --from-beginning
查看topic在分区中的偏移量
# time为-1时表示最大值,time为-2时表示最小值
bin/kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list node-01:9092 --partitions 0
test:0:69
查看组消费情况
bin/kafka-consumer-groups.sh --zookeeper node-01:2181 --describe --group console-consumer-71998
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID
sync 0 5 5 0 -
sync 1 5 5 0 -
sync 2 5 5 0 -
TOPIC:创建时topic名称
PARTITION:分区编号
CURRENT-OFFSET:表示该parition已经消费了多少条message
LOG-END-OFFSET:表示该partition已经写了多少条message
LAG:表示有多少条message没有被消费。
CONSUMER-ID:表示消费者