Kafka的topic操作(基于docker)

4,008 阅读1分钟

Kafka配置(基于容器)

Kafka的运行是基于zookeeper的,所以运行前需要确认zookeeper容器的地址

进入kafka容器

docker exec -it 容器名 /bin/sh

查看所有的topic

kafka-topics.sh  --zookeeper 172.16.7.245:2181 --list

__consumer_offsets
app


--zookeeper 指定容器的IP

获取topic的详情

kafka-topics.sh  --zookeeper 172.16.7.245:2181 --describe --topic app

Topic:app	PartitionCount:3	ReplicationFactor:1	Configs:
Topic: app	Partition: 0	Leader: 1001	Replicas: 1001	Isr: 1001
Topic: app	Partition: 1	Leader: 1001	Replicas: 1001	Isr: 1001
Topic: app	Partition: 2	Leader: 1001	Replicas: 1001	Isr: 1001

删除topic

kafka-topics.sh  --zookeeper 172.16.7.245:2181 --delete --topic app

Topic app is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

彻底删除topic还需要操作zookeeper

# 进入zookeeper容器
docker exec -it 容器名 /bin/sh

# 进入zookeeper客户端,不同的zookeeper版本进入方式可能不同
./bin/zkCli.sh

# 查看topics数据
ls /brokers/topics

# 找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。
rmr /brokers/topics/topic名称

创建topic

kafka-topics.sh  --zookeeper 172.16.7.245:2181 --create --replication-factor 1 --partitions 3 --topic app

Created topic app.

--zookeeper 表示ZK地址,可以传递多个,用逗号分隔 IP:PORT,IP:PORT,IP:PORT/kafka
--replication-factor 表示副本数量,这里的数量是包含Leader副本和Follower副本,副本数量不能超过代理数量
--partitions 表示主题的分区数量,必须传递该参数。Kafka的生产者和消费者采用多线程并行对主题的消息进行处理,每个线程处理一个分区,分区越多吞吐量就会越大,但是分区越多也意味着需要打开更多的文件句柄数量,这样也会带来一些开销。