Kafka学习笔记之如何永久删除Kafka的Topic
0x00 问题描述
使用kafka-topics --delete命令删除topic时并没有真正的删除,而是把topic标记为:“marked for deletion”,导致重新创建相同名称的Topic时报错“already exists”。
0x01 问题复现
1. 登录Kafka集群所在的服务器,创建一个test的topic
[root@cdh1 ~]# kafka-topics --create --zookeeper 192.168.2.13: --replication-factor --partitions --topic test

2.查看新创建的topic
[root@cdh1 ~]# kafka-topics --list --zookeeper 192.168.2.13:

3.通过如下命令删除新建的topic
[root@cdh1 ~]# kafka-topics --delete --zookeeper 192.168.2.13: --topic test

此处显示“Topic test is marked for deletion”
4.尝试重新创建一个test的Topic
[root@cdh1 ~]# kafka-topics --create --zookeeper 192.168.2.13: --replication-factor --partitions --topic test

提示该Topic已存在,说明在第3步操作的删除并没有真正的将Topic删除。
0x02 问题原因
默认情况下Kafka是禁用了删除Topic的操作,所以在执行Topic删除的时候只是将删除的Topic标记为“marked for deletion”状态。可以通过修改Kafka服务的配置参数启用。
0x03 解决方案
4.1 方法1
在kafka服务配置delete.topic.enable=false的情况下,如果需要永久删除topic则需要做如下操作:
#1 通过kafka命令删除相应的topic
#2 在zookeeper中删除相应的topic
#3 在topic所在的broker节点上删除topic的log数据
操作如下:
1.查看topic的描述信息,命令如下
[root@cdh1 ~]# kafka-topics --describe --zookeeper 192.168.2.13: --topic test

上图标注部分为topic对应的数据存放节点
2.通过kafka命令删除,命令如下:
[root@cdh1 ~]# kafka-topics --delete --zookeeper 192.168.2.13: --topic test

3.通过zookeeper客户端删除topic,命令如下
[root@cdh1 ~]# ./zookeeper-shell.sh 192.168.2.13:2181
[root@cdh1 ~]# ls /brokers/topics [root@cdh1 ~]# rmr /brokers/topics/test
注:标红部分为topic的名称

4.登录到第1步中列出的对应节点的topic的log数据目录,此处我们Kafka的log.dirs目录配置为/var/local/kakfa,执行命令
[root@cdh1 ~]#$ sudo rm -rf test-/

5.验证是否生效
创建一个名称为“test”的Topic,可以正常创建

注意:此处将topic为test的日志目录(/var/local/kafka/test-0)删除后,新创建的topic为test的日志目录不存在,重启Kafka服务后正常,目录能正常显示。
4.2方法2
在Kafka服务已配置delete.topic.enable=true的情况下,永久删除topic需要做如下操作:
# 使用kafka命令删除topic
操作如下:
- 删除前数据查看:
[root@cdh1 ~]#$ kafka-topics --describe --zookeeper 192.168.2.13:2181 --topic test

各个数据节点的信息:



Zookeeper信息:

2.通过kafka命令删除需要删除的topic,命令如下
[root@cdh1 ~]#$ kafka-topics --delete --zookeeper 192.168.2.13: --topic test

3.查看Zookeeper客户端topic信息
[zk: ip-172-31-1-175.ap-southeast-1.compute.internal:2181(CONNECTED) 9] ls /brokers/topics

4.查看brober节点上topic的日志数据


5.删除后成功后,验证是否能创建名称为test的Topic

注意:
如果Kafka服务配置了delete.topic.enable=true,直接通过命令行删除,未能删除Topic则可以通过zookeeper-client来进行删除。
如果Kafka服务未配置delete.topic.enable=true,直接通过delete命令删除topic,删除时只会将topic标记为“marked for deletion”,然后通过zookeeper-client进行删除是不会删除topic的data.log数据目录的,需要将相应的broker服务器上的data.log目录下相应的topic目录删除,data.log目录获取,可以通过CM界面查看:

建议:Kafka服务开启delete.topic.enable=true,开启方式如下:

开启后需要重启Kafka服务。
参考
Kafka学习笔记之如何永久删除Kafka的Topic的更多相关文章
- 大数据 -- kafka学习笔记:知识点整理(部分转载)
一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...
- kafka学习笔记(一)消息队列和kafka入门
概述 学习和使用kafka不知不觉已经将近5年了,觉得应该总结整理一下之前的知识更好,所以决定写一系列kafka学习笔记,在总结的基础上希望自己的知识更上一层楼.写的不对的地方请大家不吝指正,感激万分 ...
- Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer
Kafka 学习笔记之 Kafka0.11之console-producer/console-consumer: 启动Zookeeper 启动Kafka0.11 创建一个新的Topic: ./kafk ...
- Kafka学习之(六)搭建kafka集群
想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ...
- kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- Kafka学习笔记-如何保证高可用
一.术语 1.1 Broker Kafka 集群包含一个或多个服务器,服务器节点称为broker. broker存储topic的数据. 如果某topic有N个partition,集群有N个broker ...
- [Big Data - Kafka] kafka学习笔记:知识点整理
一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...
- Kafka学习笔记之Kafka背景及架构介绍
0x00 概述 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不 ...
- kafka学习笔记(二)——基础入门
1.集群规划 从官网下载jar包 http://kafka.apache.org/downloads.html,我选择的是kafka_2.11-0.11.0.0.tgz版本 规划一下集群环境先~ ha ...
随机推荐
- Centos7配置ssh免密登录群发
ssh免密登录是客户端发送自己的公钥到服务器.用公钥进行解密,自己生成的私钥进行加密. 首先在客户端查看sshd服务是否启动 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd; ...
- 2019年南京网络赛E题K Sum(莫比乌斯反演+杜教筛+欧拉降幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 首先我们将原式化简: \[ \begin{aligned} &\sum\limits_{l_1=1}^{n}\sum\limits_{l_2 ...
- python爬取全站壁纸代码
#测试网址:https://www.ivsky.com/bizhi/ #需要安装的库:requests,bs4 #本人是个强迫症患者,为了美观添加数个print(),其并没有实际意义,若是不爽删去即可 ...
- 02-linux-换源-ui方式
换软件源 使用清华的软件源. Ubuntu 的 ui 界面操作^换源 System setting -> Software & update -> Download from -& ...
- CentOS7.5 系统最小化安装与初始化配置
CentOS7.5 系统最小化安装与初始化配置 1.安装标准化的系统 1.1.系统安装期间的语言 选择:中文-简体中文,安装完成也会默认支持中文输出,便于管理 1.2.时区选择 亚洲上海,CST时区( ...
- 2019 Nowcoder Multi-University Training Contest 4 E Explorer
线段树分治. 把size看成时间,相当于时间 $l$ 加入这条边,时间 $r+1$ 删除这条边. 注意把左右端点的关系. #include <bits/stdc++.h> ; int X[ ...
- 【java】oracle好用,但java运行缺失右括号
可能原因SQL拼接有空格被省略导致sql粘连. 解决办法,扩大拼接或者缩小拼接范围.
- 梅尔倒谱系数特征(Mel-frequency cepstral coefficients,MFCC)
引言 感知实验表明,人耳对于声音信号的感知聚焦于某一特定频率区域内,而非在整个频谱包络中. MFCC特征是应用非常广泛的语音特征. 语音的MFCC特征是基于人耳感知实验得到,将人耳当成特定的滤波器,只 ...
- pychram-redis破解
1. Preferences -> Plugins-> 选择右下角Browse repositories 2. 搜索Iedis 3. 找到Iedis插件目录:C:\Users\用户名\.P ...
- 【游记】CSP-S2019游记
\(\Large\texttt{Day -1}\) 今天晚上gryz开了也许是晚宴(awa),有水饺和蛋糕.因为去拿笔记本的原因没有吃到蛋糕..好可惜. 明天不用上早自习太棒了. 明天出发报道. 这笔 ...