现状描述
目前公司BI业务总是和kafka打交道的比较多,后续也可能以kafka作为中间件来优化当前的微服务体系。自己上手对kafka的操作和维护比较多。分享一些使用频次比较高的kafka指令。下面直接干货吧
常用命令
(均进入kafka/bin目录下执行,如果设置了kafka作为服务器环境变量的话,直接用就好。 另外示范例子中的 XXXX是自己服务器的zookeeper 端口,AAAA是需要查看的topic名称)
1.查看所有topic
./kafka-topics.sh --zookeeper XXXX --list
[root@cdh4 bin]# ./kafka-topics.sh --zookeeper cdh5:2181 --list
__consumer_offsets
gyhPageVisit
gyhUserRegister
gyhWebLog
userCenterInfo
userCenterUserInfo
特别提醒:
例子中的__consumer_offsets是kafka自己创建的用于管理kafka消费组对topic的偏移量的。老版本kafka这一功能依赖于zookeeper进行管理,新版本的都是自己创建一个topic来进行管理的。
2.查看某个topic的详细信息
./kafka-topics.sh --zookeeper XXXX --topic AAAA --describe
[root@cdh4 bin]# ./kafka-topics.sh --zookeeper cdh3:2181 --topic userCenterUserInfo --describe
Topic: userCenterUserInfo PartitionCount: 3 ReplicationFactor: 2 Configs:
Topic: userCenterUserInfo Partition: 0 Leader: 2 Replicas: 2,0 Isr: 2
Topic: userCenterUserInfo Partition: 1 Leader: 1 Replicas: 0,1 Isr: 1
Topic: userCenterUserInfo Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1,2
特别提醒:
PartitionCount为分区数、ReplicationFactor为备份因子。
3.命令启动kafka 某个topic 生产者
./kafka-console-producer.sh --bootstrap-server XXXX --topic AAAA
4.命令启动kafka 某个topic 消费者
./kafka-console-consumer.sh --bootstrap-server XXXX --topic AAAA --from-beginning
5.命令创建kafka的一个新的topic
/kafka-topics.sh --create --zookeeper XXXX --replication-factor 2 --partitions 3 --topic AAAA
特别提醒:
topic名称最好不使用"."、"_",因为kafka内部使用了这些符号来命名内部变量, 所以可能会引起冲突,避免造成不必要的冲突。
6.动态修改topic的分区数或备份因子
./kafka-topics.sh --alter --zookeeper XXXX --topic AAAA --partitions 5
特别提醒:
kafka默认配置会允许生产者自动创建topic。 例如kafka中没有topicA,但是应用程序的生产者将数据发送到kafka的A topic中,kafka会新建一个topic A,但是这个kafka自己创建的topic 的分区数和备份因子会是0.
导致只有命令创建消费者可以消费topic中的数据,但是应用程序的消费者读不到任何数据。 这个时候就需要动态修改topic的配置了。
7.命令删除某个topic
./kafka-topics.sh --delete --zookeeper XXXX --topic AAAA
特别提示:执行后还需要 删除 topic对应的数据文件 ---->登录zookeeper ---> 删除zookeeper中的topic记录。才能彻底删除kafka中的topic。挺费事的。