काफका 0.8.1.1 में विषय हटाएं


92

मुझे 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

मैं इस विषय को कैसे हटा सकता हूं?


स्टेप बाई स्टेप प्रक्रिया के बारे में बताया गया है: stackoverflow.com/questions/33537950/…
रवींद्र बाबू

जवाबों:


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


जानकारी के लिए धन्यवाद। क्या आप जानते हैं कि संकेत के रूप में पूरे काफ्का और ज़ुकीपर को कैसे साफ़ किया जाए?
एमपैक 5

@EmPack IIRC, ऐसा करने का सबसे आसान तरीका (यदि आप समय की परवाह नहीं करते हैं) अपने सभी दलालों को बंद करना है, उस विषय के लिए अपने लॉग को हटा दें और आपको ZK नामस्थान बदल दें।
फ्रैंक १

95

ऐसा लगता है कि हटाए गए आदेश को आधिकारिक तौर पर काफ्का 0.8.1.x में एक ज्ञात बग ( https://issues.apache.org/jira/browse/KAFKA-1397 ) के कारण दर्ज नहीं किया गया था ।

फिर भी, कमांड को अभी भी कोड में भेज दिया गया था और इसे इस प्रकार निष्पादित किया जा सकता है:

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

इस बीच, बग ठीक हो गया और हटाने की कमान अब आधिकारिक रूप से काफ्का 0.8.2.0 से उपलब्ध है:

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

मैंने जो पढ़ा है, वह 0.8.1.1 से काम कर सकता है, लेकिन यह नहीं हो सकता है ... फिक्स थोड़ी देर से ट्रंक में भी है, इसलिए यदि आप सीधे ट्रंक से स्रोत लेते हैं, तो यह काम करना चाहिए
फ्रैंक

मैंने सिर्फ 0.8.1.1 पर कोशिश की है, यह "विलोपन सफल" की रिपोर्ट करता है, लेकिन यह काम नहीं किया। विषय अभी भी है, मैं एक उपभोक्ता को संलग्न कर सकता हूं और यह पिछले सभी मदों को लंबित के रूप में रिपोर्ट करेगा।
एलियास डोर्नेलेस

कफका 0.8.1.1 में विषयों को हटाने से काम नहीं चलता है। हाल ही में जारी किए गए संस्करण 0.8.2.0 में अंत में उचित विलोपन समर्थन होना चाहिए। ब्लॉग देखें ।confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2
माइकल जी। नॉल

BTW, delete.topic.enable = true के लिए गुण server.properties फ़ाइल में स्थित हो सकता है। यह डिफ़ॉल्ट रूप से टिप्पणी की है।
शनीमिस्टर

37

$ {Kafka_home} /config/server.properties में नीचे पंक्ति जोड़ें

delete.topic.enable=true

नए कॉन्फिगर के साथ काफ्का सर्वर को रीस्टार्ट करें:

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

अपने इच्छित विषयों को हटाएं:

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

10

एंड्रिया सही है। हम इसे कमांड लाइन का उपयोग करके कर सकते हैं।

और हम अभी भी इसे, द्वारा प्रोग्राम कर सकते हैं

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

वास्तव में मैं आपको Kafka 0.8.1.1 पर विषय को हटाने की सलाह नहीं देता। मैं इस विधि द्वारा इस विषय को हटा सकता हूं, लेकिन यदि आप zookeeper के लिए लॉग की जांच करते हैं, तो विलोपन इसे गड़बड़ कर देता है।


क्या इसमें zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2") शामिल होना चाहिए; और
सुमित

@ सुमित, और क्या? मैंने उस "getTopicConfigPath" का उपयोग नहीं किया। वास्तव में मैं आपको काफ्का 0.8.1.1 पर विषय को हटाने की सलाह नहीं देता। मैं इस विधि द्वारा इस विषय को हटा सकता हूं, लेकिन यदि आप zookeeper के लिए लॉग की जांच करते हैं, तो विलोपन इसे गड़बड़ कर देता है।
लियांग

लेकिन यह है कि कफ़्का यह कैसे करता है (जिस तरह से आपने सुझाव दिया है): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
सुमित

@Sumit। हां, मुझे वहां से कोड मिल गया। मुझे उस "गड़बड़" चीज़ पर यकीन नहीं है। क्योंकि एक बार जब मैं अपनी कंपनी के सर्वर पर किसी विषय को हटा देता हूं, तो डिलीट करने से जुकाइपर लॉग में बहुत सारे कबाड़ पैदा होते हैं। लेकिन मैं इसे अपने स्थानीय में पुन: पेश नहीं कर सकता। इसलिए मैं यह अनुशंसा नहीं करता कि ..
लिआंग

4

आप testज़ूकीपर शेल कमांड ( zookeeper-shell.sh) से एक विशिष्ट काफ़्का विषय (उदाहरण:) को हटा सकते हैं । विषय को हटाने के लिए नीचे दिए गए आदेश का उपयोग करें

rmr {path of the topic}

उदाहरण:

rmr /brokers/topics/test

set delete.topic.enable = true, फिर kafka से हटाएं, फिर zookeeper से भी हटाएं ...
minhas23

4

कफका में 1 या अधिक विषयों को हटाने के लिए कदम

कफका में विषयों को हटाने के लिए काफका सर्वर में डिलीट ऑप्शन को इनेबल करना होगा।

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

Kafka में एक विषय हटाएं निम्नलिखित कमांड दर्ज करें

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

काफ़्का से एक से अधिक विषयों को हटाने के लिए

(परीक्षण उद्देश्यों के लिए अच्छा है, जहां मैंने कई विषयों को बनाया और विभिन्न परिदृश्यों के लिए उन्हें हटाना पड़ा)

  1. काफ्का सर्वर और ज़ूकीपर को रोकें
  2. / tmp फ़ोल्डर में जाएं जहां लॉग संग्रहीत हैं और मैन्युअल रूप से kafkalogs और zookeeper फ़ोल्डर को हटा दें
  3. ज़ुकीपर और काफ्का सर्वर को फिर से शुरू करें और विषयों को सूचीबद्ध करने का प्रयास करें,

बिन / कफ़्का -टॉपिक्स.श --लिस्ट - ज़ूकीपर लोकलहोस्ट: 2181

यदि कोई विषय सूचीबद्ध नहीं है, तो सभी विषयों को सफलतापूर्वक हटा दिया गया है। यदि विषय सूचीबद्ध हैं, तो डिलीट सफल नहीं था। उपरोक्त चरणों को फिर से आज़माएं या अपने कंप्यूटर को पुनरारंभ करें।


ध्यान दें कि नवीनतम Kafka संस्करण के लिए इस समय (1.0.0) विकल्प server.propertiesफ़ाइल में दिखाई नहीं देता है । आपको उस लाइन को मैन्युअल रूप से जोड़ना होगा।
डेविड कोरल

@DavidCorral विषय विलोपन को डिफ़ॉल्ट रूप से 1.0.0
Tanner

2

यह चरण सभी विषयों और डेटा को हटा देगा

  • Kafka- सर्वर और Zookeeper- सर्वर बंद करो
  • दोनों सेवाओं के tmp डेटा निर्देशिकाओं को निकालें, डिफ़ॉल्ट रूप से वे C: / tmp / kafka-log और C: / tmp / zookeeper हैं।
  • फिर ज़ूकीपर-सर्वर और काफ्का-सर्वर शुरू करें

2

आदेश:

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

दुर्भाग्य से केवल विलोपन के लिए विषय चिह्नित करता है।

विलोपन नहीं होता है।

यह किसी भी स्क्रिप्ट का परीक्षण करते समय परेशानी पैदा करता है, जो काफ्का कॉन्फ़िगरेशन को तैयार करता है।

जुड़े हुए धागे:


1

उपर्युक्त उत्तरों में जोड़ने से ज़ूकीटर उपभोक्ता ऑफ़सेट पथ में उस विषय से जुड़े मेटा डेटा को हटाना पड़ता है।

bin/zookeeper-shell.sh zookeeperhost:port

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

अन्यथा ज़फ़र पर आधारित काफ़्का-निगरानी साधनों में अंतराल नकारात्मक होगा।


1

जैसा कि यहां डॉक्टर में उल्लेख किया गया है

विषय हटाने का विकल्प डिफ़ॉल्ट रूप से अक्षम है। इसे सक्षम करने के लिए सर्वर कॉन्फिगर डिलीट को हटाएं ।topic.enable = true Kafka वर्तमान में किसी विषय के लिए विभाजन की संख्या को कम करने या प्रतिकृति कारक को बदलने का समर्थन नहीं करता है।

सुनिश्चित करें कि delete.topic.enable = true


मेरा मानना ​​है कि विकल्प केवल
sp.२


0

यदि आपके पास विषय हटाने के मुद्दे हैं, तो उपयोग करके विषय को हटाने का प्रयास करें:

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

आदेश। फिर विलोपन प्रक्रिया को सत्यापित करने के लिए, काफ्का लॉग्स निर्देशिका पर जाएं, जिसे सामान्य रूप से नीचे रखा गया है /tmp/kafka-logs/, फिर कमांड के your_topic_nameमाध्यम से फ़ाइल को हटा दें rm -rf your_topic_name

एक काफ़्का प्रबंधन उपकरण जैसे पूरी प्रक्रिया की निगरानी करना याद रखें Kafka Tool

ऊपर उल्लिखित प्रक्रिया कफका सर्वर पुनरारंभ के बिना विषयों को हटा देगी।


0

चरण 1: सुनिश्चित करें कि आप रनिंग करने वाले और काफ्का से जुड़े हुए हैं

चरण 2: काफ्का विषय को चलाने के लिए काफ्का-विषय (मैक) या काफ्का-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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.