Xóa chủ đề trong Kafka 0.8.1.1


94

Tôi cần xóa chủ đề testtrong Apache Kafka 0.8.1.1.

Như được trình bày trong tài liệu ở đây , tôi đã thực hiện:

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

Tuy nhiên, điều này dẫn đến thông báo sau:

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

Làm cách nào để xóa chủ đề này?


Từng bước thủ tục được giải thích trong: stackoverflow.com/questions/33537950/...
Ravindra babu

Câu trả lời:


107

Xóa chủ đề không phải lúc nào cũng hoạt động trong 0.8.1.1

Tính năng xóa sẽ hoạt động trong bản phát hành tiếp theo, 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.

Có thể xóa một chủ đề?

Jira KAFKA-1397


Cảm ơn bạn về thông tin. Bạn có biết cách xóa toàn bộ trạng thái Kafka và Zookeeper như đã chỉ ra không?
EmPak5

@EmPack IIRC, cách dễ nhất để làm điều đó (nếu bạn không quan tâm đến thời gian cập nhật) là tắt tất cả các nhà môi giới của bạn, xóa nhật ký của bạn cho chủ đề đó và thay đổi vùng tên ZK cho bạn.
thẳng thắn

95

Có vẻ như lệnh xóa không được ghi lại chính thức trong Kafka 0.8.1.x vì một lỗi đã biết ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Tuy nhiên, lệnh vẫn được gửi trong mã và có thể được thực thi như sau:

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

Trong thời gian chờ đợi, lỗi đã được sửa và lệnh xóa hiện đã chính thức có sẵn từ Kafka 0.8.2.0 như sau:

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

Từ những gì tôi đọc, nó có thể hoạt động 0.8.1.1, nhưng nó có thể không ... Bản sửa lỗi cũng nằm trong thân cây từ một thời gian, vì vậy nếu bạn lấy nguồn trực tiếp từ thân cây, nó sẽ hoạt động
thẳng thắn

Tôi vừa thử trên 0.8.1.1, nó báo "xóa thành công" nhưng nó không hoạt động. Chủ đề vẫn ở đó, tôi có thể đính kèm một người tiêu dùng và nó sẽ báo cáo tất cả các mục trước đó là đang chờ xử lý.
Elias Dorneles

Xóa chủ đề trong Kafka 0.8.1.1 không hoạt động. Phiên bản 0.8.2.0 được phát hành gần đây cuối cùng sẽ có hỗ trợ xóa thích hợp. Xem blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll

BTW, thuộc tính cho delete.topic.enable = true có thể được đặt trong tệp server.properties. Nó được bình luận theo mặc định.
Shanemeister

38

Thêm dòng bên dưới vào $ {kafka_home} /config/server.properties

delete.topic.enable=true

Khởi động lại máy chủ kafka với cấu hình mới:

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

Xóa các chủ đề bạn muốn:

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

10

Andrea đúng. chúng ta có thể làm điều đó bằng cách sử dụng dòng lệnh.

Và chúng tôi vẫn có thể lập trình nó, bằng cách

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

Thực ra tôi không khuyên bạn xóa chủ đề trên Kafka 0.8.1.1. Tôi có thể xóa chủ đề này bằng phương pháp này, nhưng nếu bạn kiểm tra nhật ký của người giữ vườn thú, việc xóa sẽ làm rối tung nó.


Nếu nó cũng bao gồm zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); và
Sumit

@Sumit, và những gì? Tôi không sử dụng "getTopicConfigPath" đó. Thực ra tôi không khuyên bạn xóa chủ đề trên Kafka 0.8.1.1. Tôi có thể xóa chủ đề này bằng phương pháp này, nhưng nếu bạn kiểm tra nhật ký của người giữ vườn thú, việc xóa sẽ làm rối tung nó.
Liang

nhưng đây là cách kafka cũng làm điều đó (theo cách bạn đã đề xuất): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
Sumit

@Sumit. vâng, tôi đã tìm thấy mã từ đó. Tôi không chắc về điều "lộn xộn" đó. Bởi vì khi tôi xóa một chủ đề trên máy chủ công ty của mình, việc xóa sẽ tạo ra rất nhiều rác cho nhật ký của người giữ vườn thú. Nhưng tôi không thể tái tạo nó trong địa phương của tôi. Vì vậy, tôi không khuyên bạn điều đó ..
Liang

4

Bạn có thể xóa một chủ đề kafka cụ thể (ví dụ test:) khỏi lệnh Zookeeper shell ( zookeeper-shell.sh). Sử dụng lệnh dưới đây để xóa chủ đề

rmr {path of the topic}

thí dụ:

rmr /brokers/topics/test

bộ delete.topic.enable = true, sau đó xóa từ Kafka sau đó cũng xóa từ Zookeeper ...
minhas23

4

Các bước xóa 1 hoặc nhiều chủ đề trong Kafka

Để xóa các chủ đề trong kafka, tùy chọn xóa cần được bật trong máy chủ Kafka.

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

Xóa một chủ đề trong Kafka nhập lệnh sau

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

Để xóa nhiều chủ đề khỏi kafka

(tốt cho mục đích thử nghiệm, nơi tôi đã tạo nhiều chủ đề và phải xóa chúng cho các tình huống khác nhau)

  1. Dừng máy chủ Kafka và Zookeeper
  2. vào thư mục / tmp nơi lưu trữ nhật ký và xóa thủ công thư mục kafkalogs và Zookeeper
  3. Khởi động lại máy chủ sở thú và kafka và cố gắng liệt kê các chủ đề,

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

Nếu không có chủ đề nào được liệt kê thì tất cả các chủ đề đã được xóa thành công. Nếu chủ đề được liệt kê, thì việc xóa không thành công. Hãy thử lại các bước trên hoặc khởi động lại máy tính của bạn.


Lưu ý rằng đối với phiên bản Kafka mới nhất hiện tại (1.0.0), tùy chọn đó không xuất hiện trong server.propertiestệp. Bạn phải thêm dòng đó theo cách thủ công.
David Corral

Tính năng xóa chủ đề @DavidCorral được bật theo mặc định trong phiên bản 1.0.0
Tanner

2

Bước này sẽ xóa tất cả các chủ đề và dữ liệu

  • Dừng Kafka-server và Zookeeper-server
  • Loại bỏ các thư mục dữ liệu tmp của cả hai dịch vụ, theo mặc định chúng là C: / tmp / kafka-logs và C: / tmp / zookeeper.
  • sau đó khởi động Zookeeper-server và Kafka-server

2

Lệnh:

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

rất tiếc chỉ đánh dấu chủ đề để xóa.

Việc xóa không xảy ra.

Điều đó gây rắc rối, trong khi kiểm tra bất kỳ tập lệnh nào, chuẩn bị cấu hình Kafka.

Các chủ đề được kết nối:


1

Thêm vào các câu trả lời ở trên, người ta phải xóa dữ liệu meta liên quan đến chủ đề đó trong đường dẫn bù đắp cho người tiêu dùng của người nuôi thú.

bin/zookeeper-shell.sh zookeeperhost:port

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

Nếu không, độ trễ sẽ là tiêu cực trong các công cụ giám sát kafka dựa trên người trông coi vườn thú.


1

Như đã đề cập trong tài liệu ở đây

Tùy chọn xóa chủ đề bị tắt theo mặc định. Để kích hoạt nó, hãy đặt cấu hình máy chủ delete.topic.enable = true Kafka hiện không hỗ trợ giảm số lượng phân vùng cho một chủ đề hoặc thay đổi hệ số nhân bản.

Đảm bảo delete.topic.enable = true


Tôi tin rằng tùy chọn đó chỉ có sẵn trong 8.2
spuder


0

Nếu bạn gặp sự cố khi xóa chủ đề, hãy thử xóa chủ đề bằng cách sử dụng:

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

chỉ huy. Sau đó, để xác minh quá trình xóa, hãy chuyển đến thư mục nhật ký kafka thường được đặt bên dưới /tmp/kafka-logs/, sau đó xóa your_topic_nametệp bằng rm -rf your_topic_namelệnh.

Hãy nhớ theo dõi toàn bộ quá trình thông qua một công cụ quản lý kafka như Kafka Tool.

Quá trình được đề cập ở trên sẽ xóa các chủ đề mà không cần khởi động lại máy chủ kafka.


0

Bước 1: Đảm bảo rằng bạn đã kết nối với người giữ vườn thú và Kafka đang chạy

Bước 2: Để xóa chủ đề Kafka, hãy chạy Kafka-topic (Mac) hoặc Kafka-topic.sh nếu sử dụng (linux / Mac), hãy thêm cổng và --topic với tên chủ đề của bạn và - xóa nó chỉ cần xóa chủ đề với sự thành công.

# 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

0

Đầu tiên, bạn chạy lệnh này để xóa chủ đề của mình:

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

Liệt kê các chủ đề đang hoạt động để kiểm tra xóa hoàn toàn:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.