创建Kafka的Tiopic

kafka-topics.bat --create -zookeeper localhost:2182 --replication-factor 2 --partitions 3 --topic testMcdull222

--create 创建主题

--topic 主题名称

-zookeeper zookeeper集群地址

--replication-factor  每个分区副本因子个数即每个分区有多少副本

--partitions  主题partition数量

--replica-assignment 不能同时使用--partitions --replication-factor参数。指定partition的AR列表,未指定AR列表则会根据负载均衡算法将partition的replica均衡的分布在Kafka集群中。--replica-assignment 1:3,2:1,3:2,逗号区分不同的partition,冒号区别相同partition中的replica,partition-0的AR=[1,3],partition-1的AR=[2,1],partition-2的AR=[3,2]。testMcdull222AR列表计算出来时--replica-assignment 2:3,1:3,1:2 。

第一个broker

第二个broker

第三个broker

--replica-assignment 参数一般不由用户指定,由Kafka默认分配算法保证,有两个原则:

(1)使Topic的所有Partition Replica能够均匀地分配至各个Kafka Broker(负载均衡);

(2)Partition 内的replica能够均匀地分配在不同Kafka Broker。如果Partition的第一个Replica分配至某一个Kafka Broker,那么这个Partition的其它Replica则需要分配至其它的Kafka Brokers,即Partition Replica分配至不同的Broker;

1、从Broker随机位置开始按照轮询方式选择每个Partition的第一个replica

2、不同Partition剩余replica按照一定的偏移量紧跟着各自的第一个replica

指定--replica-assignment参数相当于指定了分区数、副本数。

kafka-topics.bat --create -zookeeper localhost:2182 --topic testMcdull222666 --replica-assignment 1:3,2:1,3:2

第一个broker

第二个broker

第三个broker

查看Kafka中Topic

kafka-topics.bat --zookeeper localhost:2183 --list

展示Topic详细信息

kafka-topics.bat --zookeeper localhost:2183 --describe --topic testMcdull

删除Topic

kafka-topics.bat --zookeeper localhost:2183 --delete --topic testMcdull222333

如果kafaka启动时加载的配置文件中server.properties没有配置"delete.topic.enable=true",那么此时的删除并不是真正的删除,而是把topic标记为删除:marked for deletion。或者直接从Zookeeper中删除。

彻底删除topic方式

 1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

 2、如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。

从Zookeeper中删除

(1)登录zookeeper客户端:命令:./bin/zookeeper-client

(2)找到topic所在的目录:ls /brokers/topics

(3)找到要删除的topic,执行命令:rmr /brokers/topics/topicName即可,此时topic被彻底删除。

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐