kafka 的 topic 支持增(create)删(delete)改(alter)查(describe)操作。
./kafka-topics.sh [--help] 可以查看 kafka-topics 命令的使用方法
注意:敲命令的时候不要敲错否则会报错还不知道自己错哪儿了 ,比如这样
比如这样
为此还专门看一下下载的版本,确认是稳定版没错了!
--list(查)和 --describe(查)
--list 查看目前所有的 topic 有哪些
--describe 查看某个 topic 的详细信息
./kafka-topics.sh --list --zoopkeeper 42.194.146.126:2181
由于 kafka 是依赖 zookeeper 的,需要从某个 zookeeper 上去存入或者获取 kafka 的信息,因此进行增删改查的时候都需要首先指定连接哪个 zookeeper。如果没指定 zookeeper 的 ip 和端口就会报错。
第一次使用 --list 由于没有创建 topic 因此返回为空
--create(增)
./kafka-topics.sh --zookeeper 42.194.146.126:2181 --create --topic firstTopic --partitions 3 --replication-factor 2
其中 --topic 指定 topic 的名字,--partitions 指定分区数,--replication-factor 指定副本数。
现在用 --list 和 --describe 就可以查到 firstTopic 这个 topic 的信息了
--delete(删)
./kafka-topics.sh --zookeeper 42.194.146.126:2181 --delete --topic firstTopic
从返回的信息也可以看到,如果 delete.topic.enable 没有设置为 true 的话,这个删除也只是标记删除,并没有真正删除。 因此如果再添加同样的 topic 就会报错。
我们仍然可以查到这个 topic 的信息,但会多一列 markedForDeletion = true
注意:--topic 用来指定特定的 topic,因此,增删改查发现报错的时候,不妨加上 --topic 来指定 topic 试试。
值得注意的
kafka 中主分区(leader)的备分区(follwer)不能在同个 broker 上,一般都是分布在不同的 broker 上,这也是考虑到高可用性,因此,topic 的 副本数 不能超过 breoker 数。
修改分区数为 4 副本数为 2 可以成功创建
使用 --list 查看一下
每个 broker 的 topic 数据就保存在配置文件 server.properties 指定的 logs.dir 目录下
明明规则是 topicName-partition
由于 secondTopic 有 4 个分区 ,可以看到,这个 broker 上保存了其中的 0,2,3 这 3 个分区。