zoukankan      html  css  js  c++  java
  • kafka topic常用命令

    kafka topic常用命令

    创建topic

    ./bin/kafka-topics.sh
    --create
    --zookeeper localhost:2181
    --replication-factor 1    #副本数量
    --partitions 1    #分区数量
    --topic test1
    

    查看所有topic

    ./bin/kafka-topics.sh
    --list
    --zookeeper local:2181
    

    查看topic的详细信息

    查看所有topic 的详细信息

    ./bin/kafka-topics.sh
    --describe
    --zookeeper localhost:2181
    

    查看一个topic的详细信息

    ./bin/kafka-topic.sh
    --describe
    --topic topicName
    --zookeeper localhost:2181
    

    删除topic

    如果只是运行命令删除topic,topic的数据并不会被删除

    想要完全删除topic需要以下步骤:

    step1

    把正在运行的 produce和consume停止,设置auto.create.topics.enable = false(可选)。server.properties 设置delete.topic.enable=true,如果delete.topic.enable没有设置为true那么删除topic的时候只是被标记为删除而不会真正的删除。

    step2

    运行删除命令:

    ./bin/kafka-topics.sh 
    --delete 
    --zookeeper localhost:2181
    --topic topicName
    

    step3

    删除kafka存储目录server.properties文件的log.dir配置,默认为/data/kafka-logs相关topic的数据目录

    注意:如果kafka有多个broker,且每个broker配置了多个数据盘,例如/data/kafka-logs,/data1/kafka-logs,且topic有多个分区partition和多个副本replication,则需要把所有的broker的所有数据盘进行扫描,删除该topic的所有数据

    经过以上基本就能删除topic以及topic的数据了,如果还无法正常删除topic,那么请继续

    step4

    找一台部署了zk的服务器,登录zookeeper:

    ./bin/zkCli.sh -server localhost:2181
    

    登陆到zk shell之后,找到topic所在的目录:

    ls /brokers/topics
    

    找到要删除的topic,然后执行:

    rmr /brokers/topics/topicName
    

    如果topic是被标记为marked for deletion状态,则是因为你没有把delete.topic.enable没有设置为true,执行:

    ls /admin/delete_topic
    

    找到要删除的topic之后执行:

    rmr /admin/delete_topic/topicName
    

    备注

    网络上很多其它文章还说明,需要删除topic在zk上面的消费节点记录、配置节点记录,比如:

    rmr /consumers/【consumer-group】
    
    rmr /config/topics/【topic name】
    

    其实正常情况是不需要进行这两个操作的,如果需要,那都是由于操作不当导致的。比如step1停止生产和消费程序没有做或者没有正确配置。也就是说,正常情况下严格按照step1 – step4的步骤,是一定能够正常删除topic的。

    到这里你的topic已经被删除的干干净净了,如果还不行评论区告诉我,看看还有什么是我没踩过的坑

    修改topic的分区数量

    注意:分区数量相对于原来,只能增加不能减少

    ./bin/kafka-topics.sh
    --alter
    --partitions 15
    --zookeeper localhost:2181
    --topic topicName
    

    修改topic的副本数量

    step1:查看topic信息

    首先我们查看以下kafkatest这个topic的信息

    可以看出kafkatest这个topic是有1个副本的

    step2: 创建副本文件

    vim increase-replication-factor.json
    

    添加内容:

    {"version":1,
    "partitions":[
    {"topic":"kafkatest","partition":0,"replicas":[1001,1002]}
    ]
    

    step3:执行命令加载副本文件

    ./bin/kafka-reassign-partition.sh
    --execute
    --reassignment-json-file increase-replication-factor.json
    --zookeeper localhost:2181
    

    返回信息:

    再次查看kafkatest这个topic的详细信息:

    可以看到kafkatest这个topic的分区副本数量已经变成了两个分别是1001,1002

    参考文献:
    kafka如何彻底删除topic及数据:https://blog.csdn.net/belalds/article/details/80575751

  • 相关阅读:
    c++ 两个set合并
    L2-2 小字辈 (25 分)
    L1-1 天梯赛座位分配
    c++ 用 0x3f3f3f3f 设定最大int值的优点
    Treap(树堆)(转)
    new一个二维数组(转)
    Laplacian matrix(转)
    寒假计划制定
    寒假集训日志(八,九,十)——浪浪浪
    寒假集训日志(七)——数据结构
  • 原文地址:https://www.cnblogs.com/Jaryer/p/13644739.html
Copyright © 2011-2022 走看看