Kafka 0.8.1.1에서 주제 삭제


94

testApache Kafka 0.8.1.1에서 주제를 삭제해야합니다 .

여기 문서에 표현 된대로 다음을 실행했습니다.

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

그러나 이로 인해 다음 메시지가 표시됩니다.

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

이 주제를 어떻게 삭제할 수 있습니까?


답변:


107

항목 삭제가 0.8.1.1에서 항상 작동하는 것은 아닙니다.

다음 릴리스 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.

주제를 삭제할 수 있습니까?

지라 KAFKA-1397


정보 주셔서 감사합니다. 표시된대로 전체 Kafka 및 Zookeeper 상태를 지우는 방법을 알고 있습니까?
EmPak5

@EmPack IIRC,이를 수행하는 가장 쉬운 방법 (가동 시간에 신경 쓰지 않는 경우)은 모든 브로커를 종료하고 해당 주제에 대한 로그를 삭제하고 ZK 네임 스페이스를 변경하는 것입니다.
frank

95

삭제 명령은 알려진 버그 ( https://issues.apache.org/jira/browse/KAFKA-1397)로 인해 Kafka 0.8.1.x에서 공식적으로 문서화되지 않은 것 같습니다. )로 .

그럼에도 불구하고 명령은 여전히 ​​코드에 포함되어 있으며 다음과 같이 실행할 수 있습니다.

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

그 동안 버그가 수정되었으며 이제 Kafka 0.8.2.0에서 다음과 같이 삭제 명령을 공식적으로 사용할 수 있습니다.

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

내가 읽은 바에 따르면 0.8.1.1은 작동 할 수 있지만 그렇지 않을 수도 있습니다. 수정은 잠시 이후 트렁크에도 있습니다. 따라서 트렁크에서 직접 소스를 가져 오면 작동합니다
frank

방금 0.8.1.1을 사용해 보았지만 "삭제 성공"이라고보고했지만 작동하지 않았습니다. 주제가 아직 남아 있습니다. 소비자를 첨부 할 수 있으며 이전 항목을 모두 보류 중으로보고합니다.
Elias Dorneles 2015 년

Kafka 0.8.1.1에서 주제 삭제가 작동하지 않습니다. 최근에 출시 된 버전 0.8.2.0은 드디어 적절한 삭제 지원을 제공합니다. blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2를 참조 하세요 .
Michael G. Noll

BTW, delete.topic.enable = true의 속성은 server.properties 파일에 있습니다. 기본적으로 주석 처리됩니다.
Shanemeister

38

$ {kafka_home} /config/server.properties에 아래 줄을 추가합니다.

delete.topic.enable=true

새 구성으로 kafka 서버를 다시 시작하십시오.

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

원하는 주제를 삭제하십시오.

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

10

Andrea가 맞습니다. 명령 줄을 사용하여 할 수 있습니다.

그리고 우리는 여전히 그것을 프로그램 할 수 있습니다.

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

실제로 Kafka 0.8.1.1에서 주제를 삭제하지 않는 것이 좋습니다. 이 방법으로이 토픽을 삭제할 수 있지만 사육사 로그를 확인하면 삭제가 엉망이됩니다.


또한 zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ( "test2")); 그리고
Sumit

@Sumit, 그리고 무엇? 나는 그 "getTopicConfigPath"를 사용하지 않았다. 실제로 Kafka 0.8.1.1에서 주제를 삭제하지 않는 것이 좋습니다. 이 방법으로이 토픽을 삭제할 수 있지만 사육사 로그를 확인하면 삭제가 엉망이됩니다.
Liang

하지만 이것이 kafka 도하
Sumit

@Sumit. 예, 거기에서 코드를 찾았습니다. 나는 그 "지저분한"것에 대해 잘 모르겠습니다. 회사 서버에서 주제를 삭제하면 삭제로 인해 사육사 로그에 많은 정크가 생성되기 때문입니다. 그러나 나는 그것을 내 지역에서 재현 할 수 없습니다. 그 ..하지 않는 것이 좋습니다 그래서
리앙

4

testzookeeper 셸 명령 ( zookeeper-shell.sh) 에서 특정 kafka 주제 (예 :)를 삭제할 수 있습니다 . 아래 명령을 사용하여 주제를 삭제하십시오.

rmr {path of the topic}

예:

rmr /brokers/topics/test

세트 delete.topic.enable은 ... 다음 또한 사육사에서 삭제 한 후 카프카에서 삭제 진정한 =
minhas23

4

Kafka에서 하나 이상의 주제를 삭제하는 단계

kafka에서 토픽을 삭제하려면 Kafka 서버에서 삭제 옵션을 활성화해야합니다.

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

Kafka에서 하나의 주제를 삭제하려면 다음 명령을 입력하십시오.

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

kafka에서 둘 이상의 주제를 삭제하려면

(테스트 목적에 적합합니다. 여러 주제를 만들고 다른 시나리오에서 삭제해야했습니다)

  1. Kafka 서버 및 Zookeeper 중지
  2. 로그가 저장된 / tmp 폴더로 이동하여 kafkalogs 및 zookeeper 폴더를 수동으로 삭제하십시오.
  3. 사육사 및 kafka 서버를 다시 시작하고 주제를 나열하십시오.

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

항목이 나열되지 않으면 모든 항목이 성공적으로 삭제 된 것입니다. 항목이 나열되면 삭제가 실패한 것입니다. 위의 단계를 다시 시도하거나 컴퓨터를 다시 시작하십시오.


현재 최신 Kafka 버전 (1.0.0)의 경우 해당 옵션이 server.properties파일에 표시되지 않습니다 . 해당 라인을 수동으로 추가해야합니다.
David Corral

@DavidCorral 항목을 삭제 1.0.0에서 기본적으로 활성화되어 있습니다
태너

2

이 단계는 모든 주제와 데이터를 삭제합니다.

  • Kafka-server 및 Zookeeper-server 중지
  • 두 서비스의 tmp 데이터 디렉토리를 제거하십시오. 기본적으로 C : / tmp / kafka-logs 및 C : / tmp / zookeeper입니다.
  • 그런 다음 Zookeeper-server 및 Kafka-server를 시작하십시오.


1

위의 답변에 추가하면 zookeeper 소비자 오프셋 경로에서 해당 주제와 관련된 메타 데이터를 삭제해야합니다.

bin/zookeeper-shell.sh zookeeperhost:port

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

그렇지 않으면 사육사를 기반으로 한 kafka 모니터링 도구에서 지연이 음수입니다.


1

여기 문서 에서 언급했듯이

주제 삭제 옵션은 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 서버 구성을 설정하십시오. delete.topic.enable = true Kafka는 현재 토픽에 대한 파티션 수를 줄이거 나 복제 요소를 변경하는 것을 지원하지 않습니다.

delete.topic.enable = true 확인


나는 옵션이 8.2에서만 가능하다고 믿는다
spuder 2015


0

주제를 삭제하는 데 문제가있는 경우 다음을 사용하여 주제를 삭제 해보십시오.

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

명령. 그런 다음 삭제 프로세스를 확인하려면 일반적으로 아래에있는 kafka logs 디렉토리로 이동 /tmp/kafka-logs/한 다음 명령을 your_topic_name통해 파일 을 삭제합니다 rm -rf your_topic_name.

와 같은 kafka 관리 도구를 통해 전체 프로세스를 모니터링하는 것을 잊지 마십시오 Kafka Tool.

위에서 언급 한 프로세스는 kafka 서버를 다시 시작하지 않고 주제를 제거합니다.


0

1 단계 : zookeeper 및 Kafka 실행에 연결되어 있는지 확인

2 단계 : Kafka 토픽을 삭제하려면 Kafka-topic (Mac) 또는 Kafka-topic.sh를 사용하는 경우 (linux / Mac)를 실행합니다. 포트를 추가하고 --topic과 함께 주제 이름을 추가하고-삭제하면됩니다. 성공.

# 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

먼저 다음 명령을 실행하여 주제를 삭제합니다.

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

완전 삭제를 확인하기 위해 활성 주제 나열 :

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.