1. 先创建一个Topic
[root@server-1 bin]# ./kafka-topics.sh --create --zookeeper 192.168.81.5:2181 --replication-factor 3 --partitions 2 --topic google
- --topic :主题名字
- --partitions :分区数量
- --replication-factor :副本因子
2. 查看一下建好的Topic
[root@server-1 bin]# ./kafka-topics.sh --list --zookeeper 192.168.81.5:2181
3. 查看主题详情
使用--describe参数来查看主题的详情,通过--topic来指定想要查看的topic,不指定则显示所有的topic。
[root@server-1 bin]# ./kafka-topics.sh --zookeeper 192.168.81.5:2181 --describe --topic google
4. 在建好的Topic下生产消息
[root@server-1 bin]# ./kafka-console-producer.sh --broker-list 192.168.81.5:9092 --topic google
5. 消费指定Topic下的消息
旧版本
[root@server-1 bin]# ./kafka-console-consumer.sh --zookeeper 192.168.81.5:2181 --topic google --from-beginning
也可以指定消费者参数,如下 :
[root@server-1 bin]# ./kafka-console-consumer.sh --zookeeper 192.168.81.5:2181 --topic google --from-beginning --consumer-property group.id=test_group
- --consumer-property可以指定消费者参数,如 group.id=test_group。多个参数可以用逗号隔开。
新版本
[root@server-1 bin]# ./kafka-console-consumer.sh --bootstrap-server node-1:9092,node-2:9092,node-3:9092 --topic google
- --bootstrap-server 表示我们的kafak集群的地址,在旧版本中使用的是--zookeeper参数,两者至少使用一个
- --from-beginning 表示我们从最开始的数据进行消费
- --topic指定我们topic的名字
6.查看分组
旧版本
[root@server-1 bin]# ./kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --list
新版本
[root@server-1 bin]# ./kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9292 --list
7.查看consumer分组详情(消费者组消费进度监控)
kafka 在 0.9 版本之后,kafka的消费者组和offset信息就不存zookeeper了。
0.9 之前版本查看所有消费组:
| |
新版本 0.9 版本之后查看所有消费组
| |
显示某个消费组的消费详情(仅支持offset存储在zookeeper上的)
1 | bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --zookeeper localhost:2181 --group logstash-new |
显示某个消费组的消费详情(支持0.9版本+)
1 | bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group group-info |
输出说明:
8. 删除指定Topic
先list一下,然后删除:
[root@server-1 bin]# ./kafka-topics.sh --delete --zookeeper 192.168.81.5:2181 --topic google
注意:需要在config目录下server.properties文件配置delete.topic.enable=true,否则无法删除
9. 吞吐量测试
生产者吞吐量测试
[root@server-1 bin]# ./kafka-producer-perf-test.sh --topic perf_single --num-records 100000 --record-size 200 --throughput -1 --producer-props bootstrap.servers=192.168.81.5:9092 acks=-1
- --topic topic名称,本例为test_perf
- --num-records 总共需要发送的消息数,本例为1000000
- --record-size 每个记录的字节数,本例为3000
- --throughput 每秒钟发送的记录数,本例为20000
- --producer-props bootstrap.servers=192.168.81.5:9092 发送端的配置信息
消费者吞吐量测试
[root@server-1 bin]# ./kafka-consumer-perf-test.sh --topic perf --broker-list 192.168.81.5:9092 --messages 500000 --message-size 200
10. 查看topic当前消息数
[root@server-1 bin]# ./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.81.5:9092 --topic google --time -1
- --time -1 表示最大位移
[root@server-1 bin]# ./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.81.5:9092 --topic google --time -2
- --time -2 表示最早位移
11.查询__consumer_offsets
__consumer_offsets这个topic是kafka自己创建的
__consumer_offsets有50个分区,要查询指定的消费者组可以取hashCode再对50取余,即可得到对应的分区。
0.11.0.0版本之前
[root@server-1 bin]# ./kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 35 --broker-list 192.168.81.5:9092 --formatter 'kafka.coordinator.GroupMetadataManager$OffsetsMessageFormatter'
0.11.0.0版本及之后
[root@server-1 bin]# ./kafka-simple-consumer-shell.sh --topic __consumer_offsets --partition 14 --broker-list 192.168.81.5:9092 --formatter 'kafka.coordinator.group.GroupMetadataManager$OffsetsMessageFormatter'
12.首选leader的选举
首选leader是指创建topic时选定的leader就是分区的首选leader,创建topic时会在broker之间均衡leader。
在kafka集群中,broker服务器难免会发生宕机或崩溃的情况。这种情况发生后,该broker上的leader副本变为不可用,kafka会将这些分区的leader转移到其它broker上。即使broker重启回来, 其上的副本也只能作为跟随者副本,不能对外提供服务。随着时间的增长,会导致leader的不均衡,集中在一小部分broker上。
可以通过kafka-preferred-replica-election.sh工具来手动触发首选的副本选举。
[root@server-1 bin]# ./kafka-preferred-replica-election.sh --zookeeper cluster101:2181