kafka的启动与测试、删除topic
进入kafka的安装目录,不知道安装目录的可以用命令 ps -ef|grep kafka
来查看,我的目录是/usr/local/kafka
-
查看端口,进入conf文件夹
-
zookeeper
zookeeper.properties
dataDir=/tmp/zookeeper
代表zookeeper数据存储路径,clientPort=2182
代表zookeeper的端口号为:2182,消费者需要监听的端口
-
kafka
server.properties
zookeeper.connect=localhost:2182
代表连接zookeeper的端口,- port是端口9091
-
-
启动与停止
-
先启动zookeeper
- 命令是
nohup /usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties &
- 命令是
-
在启动server
- 命令是
nohup /usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &
- 命令是
-
-
topic
- 创建topic
/usr/local/kafka/bin/kafktopics.sh --create --zookeeper localhost:2182 --replication-factor 1 --partitions 1 --topic test
- 查看topic
/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2182
- 删除topic
/usr/local/kafka/bin/kafka-topics.sh --delete --zookeeper localhost:2182 --topic test
删除topic这块儿有可能没有真的删除,只是标记为 marked for deletion,并没有真的删除,详情看下面
- 创建topic
-
彻底删除topic
-
如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费程序需要停止
因为如果有程序正在生产或者消费该topic,则该topic的offset信息一致会在broker更新。调用kafka delete命令则无法删除该topic。
同时,需要设置server.properties
的auto.create.topics.enable=false
,默认设置为true。如果设置为true,则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。
所以,这一步很重要,必须设置auto.create.topics.enable = false,并认真把生产和消费程序彻底全部停止。 -
server.properties
设置delete.topic.enable=true
, 如果没有设置 delete.topic.enable=true,则调用kafka 的delete命令无法真正将topic删除,而是显示(marked for deletion) -
重启zookeeper和server,然后调用命令
/usr/local/kafka/bin/kafka-topics.sh --delete --zookeeper localhost:2182 --topic test
删除topic -
删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic的数据目录。
注意:如果kafka 有多个 broker,且每个broker 配置了多个数据盘(比如 /tmp/kafka-logs,/tmp1/kafka-logs ...),且topic也有多个分区和replica,则需要对所有broker的所有数据盘进行扫描,删除该topic的所有分区数据。 -
(仅在测试环境这样用,因为删掉所有数据了)如果上面还不行,就删掉
/tmp/kafka-logs
和/tmp/zookeeper/
下的数据(谨慎使用)
-
-
测试
-
创建生产者(A窗口)可能由于kafka版本不同,命令参数可能不同,可以使用bin/kafka-console-producer.sh --topic test 看下
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.90.123:9093 --topic test
然后就可输入测试的内容了,回车发送
-
创建消费者(在B窗口)可能由于kafka版本不同,命令参数可能不同,可以使用bin/kafka-console-consumer.sh --topic test 看下
/usr/local/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2182 --topic test --from-beginning
启动完就可以接受生产者发过来的内容了
-