kafka的启动与测试、删除topic

进入kafka的安装目录,不知道安装目录的可以用命令 ps -ef|grep kafka 来查看,我的目录是/usr/local/kafka
  1. 查看端口,进入conf文件夹

    • zookeeper zookeeper.properties

      • dataDir=/tmp/zookeeper 代表zookeeper数据存储路径,
      • clientPort=2182 代表zookeeper的端口号为:2182,消费者需要监听的端口
    • kafka server.properties

      • zookeeper.connect=localhost:2182 代表连接zookeeper的端口,
      • port是端口9091
  2. 启动与停止

    • 先启动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 &
  3. 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,并没有真的删除,详情看下面

  4. 彻底删除topic

    1. 如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费程序需要停止
      因为如果有程序正在生产或者消费该topic,则该topic的offset信息一致会在broker更新。调用kafka delete命令则无法删除该topic。
      同时,需要设置 server.propertiesauto.create.topics.enable=false,默认设置为true。如果设置为true,则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。
      所以,这一步很重要,必须设置auto.create.topics.enable = false,并认真把生产和消费程序彻底全部停止。

    2. server.properties 设置 delete.topic.enable=true, 如果没有设置 delete.topic.enable=true,则调用kafka 的delete命令无法真正将topic删除,而是显示(marked for deletion)

    3. 重启zookeeper和server,然后调用命令/usr/local/kafka/bin/kafka-topics.sh --delete --zookeeper localhost:2182 --topic test删除topic

    4. 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic的数据目录。
      注意:如果kafka 有多个 broker,且每个broker 配置了多个数据盘(比如 /tmp/kafka-logs,/tmp1/kafka-logs ...),且topic也有多个分区和replica,则需要对所有broker的所有数据盘进行扫描,删除该topic的所有分区数据。

    5. (仅在测试环境这样用,因为删掉所有数据了)如果上面还不行,就删掉 /tmp/kafka-logs/tmp/zookeeper/下的数据(谨慎使用)

  5. 测试

    • 创建生产者(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 启动完就可以接受生产者发过来的内容了
posted @ 2020-01-13 19:04  一个小学僧  阅读(742)  评论(0编辑  收藏  举报