Hapus topik di Kafka 0.8.1.1

98

Saya perlu menghapus topik testdi Apache Kafka 0.8.1.1.

Seperti yang diungkapkan dalam dokumentasi di sini , saya telah mengeksekusi:

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

Namun, ini menghasilkan pesan berikut:

Command must include exactly one action: --list, --describe, --create or --alter

Bagaimana cara menghapus topik ini?

EmPak5
sumber
Prosedur langkah demi langkah dijelaskan di: stackoverflow.com/questions/33537950/…
Ravindra babu

Jawaban:

110

Menghapus topik tidak selalu berfungsi di 0.8.1.1

Penghapusan harus bekerja di rilis berikutnya, 0.8.2

kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

  Topic your_topic_name is marked for deletion.
  Note: This will have no impact if delete.topic.enable is not set to true.

Apakah mungkin menghapus topik?

Jira KAFKA-1397

jujur
sumber
Terimakasih atas infonya. Apakah Anda tahu cara menghapus seluruh status Kafka dan Zookeeper seperti yang ditunjukkan?
EmPak5
@EmPack IIRC, cara termudah untuk melakukannya (jika Anda tidak peduli dengan waktu up) adalah dengan mematikan semua broker Anda, menghapus log Anda untuk topik itu dan mengubah namespace ZK Anda.
terang
95

Tampaknya perintah penghapusan tidak didokumentasikan secara resmi di Kafka 0.8.1.x karena bug yang diketahui ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Namun demikian, perintah tersebut masih dikirimkan dalam kode dan dapat dijalankan sebagai:

bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper localhost:2181 --topic test

Sementara itu, bug telah diperbaiki dan perintah penghapusan sekarang secara resmi tersedia dari Kafka 0.8.2.0 sebagai:

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
Andrea
sumber
Dari apa yang saya baca, mungkin bekerja 0.8.1.1, tetapi mungkin tidak ... Perbaikannya juga ada di bagasi sejak lama, jadi jika Anda mengambil sumbernya langsung dari bagasi, itu akan berfungsi
terang
Saya baru saja mencoba 0.8.1.1, ia melaporkan "penghapusan berhasil" tetapi tidak berhasil. Topiknya masih ada, saya dapat melampirkan konsumen dan itu akan melaporkan semua item sebelumnya sebagai menunggu keputusan.
Elias Dorneles
Menghapus topik di Kafka 0.8.1.1 tidak berfungsi. Versi 0.8.2.0 yang baru dirilis akhirnya memiliki dukungan penghapusan yang tepat. Lihat blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll
BTW, properti untuk delete.topic.enable = true dapat ditemukan di file server.properties. Itu dikomentari secara default.
Shanemeister
38

Tambahkan baris di bawah ini di $ {kafka_home} /config/server.properties

delete.topic.enable=true

Mulai ulang server kafka dengan konfigurasi baru:

${kafka_home}/bin/kafka-server-start.sh ~/kafka/config/server.properties

Hapus topik yang ingin Anda:

${kafka_home}/bin/kafka-topics.sh --delete  --zookeeper localhost:2181  --topic daemon12
daemon12
sumber
10

Andrea benar. kita bisa melakukannya dengan menggunakan baris perintah.

Dan kita masih bisa memprogramnya, dengan

ZkClient zkClient = new ZkClient("localhost:2181", 10000);
zkClient.deleteRecursive(ZkUtils.getTopicPath("test2"));

Sebenarnya saya tidak menyarankan Anda menghapus topik di Kafka 0.8.1.1. Saya dapat menghapus topik ini dengan metode ini, tetapi jika Anda memeriksa log untuk penjaga kebun binatang, penghapusan akan mengacaukannya.

Liang
sumber
Haruskah itu juga menyertakan zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); dan
Sumit
@ Sumit, dan apa? Saya tidak menggunakan "getTopicConfigPath" itu. Sebenarnya saya tidak menyarankan Anda menghapus topik di Kafka 0.8.1.1. Saya dapat menghapus topik ini dengan metode ini, tetapi jika Anda memeriksa log untuk penjaga kebun binatang, penghapusan akan mengacaukannya.
Liang
tapi beginilah cara kafka juga melakukannya (seperti yang Anda sarankan): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
Sumit
@Sum. ya, saya menemukan kodenya dari sana. Saya tidak yakin tentang hal "kacau" itu. Karena begitu saya menghapus topik di server perusahaan saya, penghapusan tersebut menghasilkan banyak sampah ke log penjaga kebun binatang. Tetapi saya tidak dapat mereproduksinya di lokal saya. Jadi saya tidak menyarankan itu ..
Liang
4

Anda dapat menghapus topik kafka tertentu (contoh:) testdari perintah zookeeper shell ( zookeeper-shell.sh). Gunakan perintah di bawah ini untuk menghapus topik

rmr {path of the topic}

contoh:

rmr /brokers/topics/test
pengguna1293543
sumber
set delete.topic.enable = true, lalu hapus dari kafka lalu hapus juga dari zookeeper ...
minhas23
4

Langkah-langkah untuk Menghapus 1 atau lebih Topik di Kafka

Untuk menghapus topik di kafka, opsi hapus harus diaktifkan di server Kafka.

1. Go to {kafka_home}/config/server.properties
2. Uncomment delete.topic.enable=true

Hapus satu Topik di Kafka masukkan perintah berikut

kafka-topics.sh --delete --zookeeper localhost: 2181 --topic

Untuk menghapus lebih dari satu topik dari kafka

(baik untuk tujuan pengujian, di mana saya membuat banyak topik & harus menghapusnya untuk skenario yang berbeda)

  1. Hentikan Kafka Server dan Zookeeper
  2. buka folder / tmp tempat log disimpan dan hapus folder kafkalogs dan zookeeper secara manual
  3. Mulai ulang server penjaga kebun binatang dan kafka dan coba daftar topik,

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

jika tidak ada topik yang terdaftar maka semua topik telah berhasil dihapus. Jika topik dicantumkan, maka penghapusan tidak berhasil. Coba langkah-langkah di atas lagi atau mulai ulang komputer Anda.

CodeUrLife
sumber
Perhatikan bahwa untuk versi Kafka terbaru saat ini (1.0.0) opsi itu tidak muncul di server.propertiesfile. Anda harus menambahkan baris itu secara manual.
David Corral
Penghapusan topik @DavidCorral diaktifkan secara default di 1.0.0
Tanner
2

Langkah ini akan menghapus semua topik dan data

  • Hentikan Kafka-server dan Zookeeper-server
  • Hapus direktori data tmp dari kedua layanan, secara default adalah C: / tmp / kafka-logs dan C: / tmp / zookeeper.
  • kemudian mulai Zookeeper-server dan Kafka-server
Venkatesh Boya
sumber
1

Menambah jawaban di atas, seseorang harus menghapus meta data yang terkait dengan topik itu di jalur offset konsumen penjaga kebun binatang.

bin/zookeeper-shell.sh zookeeperhost:port

rmr /consumers/<sample-consumer-1>/offsets/<deleted-topic>

Jika tidak, lag akan menjadi negatif dalam alat pemantauan kafka berdasarkan penjaga kebun binatang.

Ksatria71
sumber
1

Seperti yang disebutkan dalam dokumen di sini

Opsi penghapusan topik dinonaktifkan secara default. Untuk mengaktifkannya, setel konfigurasi server delete.topic.enable = true Kafka saat ini tidak mendukung pengurangan jumlah partisi untuk suatu topik atau mengubah faktor replikasi.

Pastikan delete.topic.enable = true

abmd
sumber
Saya yakin opsi itu hanya tersedia di 8.2
spuder
1
bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic <topic-name>
Avinav Mishra
sumber
0

Jika Anda mengalami masalah saat menghapus topik, coba hapus topik tersebut menggunakan:

$KAFKA_HOME/bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

perintah. Kemudian untuk memverifikasi proses penghapusan, buka direktori kafka logs yang biasanya ditempatkan di bawah /tmp/kafka-logs/, lalu hapus your_topic_namefile melalui rm -rf your_topic_nameperintah.

Ingatlah untuk memantau seluruh proses melalui alat manajemen kafka seperti Kafka Tool.

Proses yang disebutkan di atas akan menghapus topik tanpa restart server kafka.

Vahid F
sumber
0

Langkah 1: Pastikan Anda terhubung ke penjaga kebun binatang dan Kafka berlari

Langkah 2: Untuk menghapus topik Kafka, jalankan Kafka-topic (Mac) atau Kafka-topic.sh jika digunakan (linux / Mac) tambahkan port dan --topic dengan nama topik Anda dan --hapus saja hapus topik tersebut dengan keberhasilan.

# Delete the kafka topic
# it will delete the kafka topic
kafka-topics --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete
# or
kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete
Black_Dreams
sumber
0

Pertama, Anda menjalankan perintah ini untuk menghapus topik Anda:

$ bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic <topic_name>

Buat daftar topik aktif untuk diperiksa, hapus sepenuhnya:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
yuen26
sumber