apache-kafka ट्यूटोरियल
शुरुआत अपाचे-काफ्का से हुई
खोज…
टिप्पणियों
काफ्का एक उच्च थ्रूपुट प्रकाशन-सदस्यता संदेश प्रणाली है जिसे वितरित, विभाजित, दोहराया गया प्रतिबद्ध लॉग सेवा के रूप में लागू किया गया है।
आधिकारिक काफ्का साइट से लिया गया
तेज
एक सिंगल काफ्का ब्रोकर हजारों क्लाइंट्स से प्रति सेकंड सैकड़ों मेगाबाइट रीड और लिखता है।
मापनीय
काफ्का को एक बड़े समूह के लिए केंद्रीय डेटा रीढ़ के रूप में एकल क्लस्टर की अनुमति देने के लिए डिज़ाइन किया गया है। यह बिना समय के बिना विस्तृत और पारदर्शी रूप से विस्तारित किया जा सकता है। डेटा स्ट्रीम किसी भी एकल मशीन की क्षमता से बड़ी डेटा स्ट्रीम और समन्वित उपभोक्ताओं के समूहों को अनुमति देने के लिए मशीनों के एक समूह में विभाजित और फैली हुई हैं।
टिकाऊ
संदेशों को डिस्क पर जारी रखा जाता है और डेटा हानि को रोकने के लिए क्लस्टर के भीतर दोहराया जाता है। प्रत्येक ब्रोकर प्रदर्शन प्रभाव के बिना संदेशों की टेराबाइट्स को संभाल सकता है।
डिजाइन द्वारा वितरित किया गया
कफ़का में एक आधुनिक क्लस्टर-केंद्रित डिज़ाइन है जो मजबूत स्थायित्व और दोष-सहिष्णुता की गारंटी देता है।
स्थापना या सेटअप
चरण 1 । जावा 7 या 8 स्थापित करें
चरण 2 । Download Apache Kafka at: http://kafka.apache.org/downloads.html
उदाहरण के लिए, हम Apache Kafka 0.10.0.0 डाउनलोड करने का प्रयास करेंगे
चरण 3 । संपीड़ित फ़ाइल निकालें।
लिनक्स पर:
tar -xzf kafka_2.11-0.10.0.0.tgz
विंडो पर: राइट क्लिक करें -> यहां निकालें
चरण 4 । ज़ूकीपर शुरू करो
cd kafka_2.11-0.10.0.0
लिनक्स:
bin/zookeeper-server-start.sh config/zookeeper.properties
खिड़कियाँ:
bin/windows/zookeeper-server-start.bat config/zookeeper.properties
चरण 5 । कफका सर्वर शुरू करें
लिनक्स:
bin/kafka-server-start.sh config/server.properties
खिड़कियाँ:
bin/windows/kafka-server-start.bat config/server.properties
परिचय
Apache Kafka ™ एक वितरित स्ट्रीमिंग प्लेटफॉर्म है।
जिसका मतलब है
1-यह आपको रिकॉर्ड की धाराओं को प्रकाशित करने और सदस्यता लेने की सुविधा देता है। इस संबंध में यह संदेश कतार या उद्यम संदेश प्रणाली के समान है।
2-यह आपको दोष-सहिष्णु तरीके से रिकॉर्ड की धाराओं को संग्रहीत करने देता है।
3-यह आपको रिकॉर्ड की धाराओं को संसाधित करने देता है जैसे वे होते हैं।
यह आवेदन के दो व्यापक वर्गों के लिए उपयोग किया जाता है:
1-बिल्डिंग वास्तविक समय स्ट्रीमिंग डेटा पाइपलाइन जो मज़बूती से सिस्टम या एप्लिकेशन के बीच डेटा प्राप्त करते हैं
2-बिल्डिंग वास्तविक समय स्ट्रीमिंग एप्लिकेशन जो डेटा की धाराओं में परिवर्तित या प्रतिक्रिया करते हैं
काफ्का कंसोल स्क्रिप्ट यूनिक्स-आधारित और विंडोज प्लेटफार्मों के लिए अलग हैं। उदाहरणों में, आपको अपने प्लेटफ़ॉर्म के अनुसार एक्सटेंशन जोड़ने की आवश्यकता हो सकती है। लिनक्स:
bin/.shएक्सटेंशन के साथ स्थित स्क्रिप्ट। विंडोज:bin\windows\और.batएक्सटेंशन में स्थित स्क्रिप्ट।
स्थापना
चरण 1: कोड डाउनलोड करें और इसे अनटार करें:
tar -xzf kafka_2.11-0.10.1.0.tgz
cd kafka_2.11-0.10.1.0
चरण 2: सर्वर शुरू करें।
बाद में विषयों को हटाने में सक्षम होने के लिए,
server.propertiesखोलें औरdelete.topic.enableको सही पर सेट करें।
काफ्का ज़ुकीपर पर बहुत निर्भर करता है, इसलिए आपको इसे पहले शुरू करने की आवश्यकता है। यदि आपके पास यह स्थापित नहीं है, तो आप त्वरित और गंदे एकल-नोड ज़ूकेर इंस्टेंस प्राप्त करने के लिए काफ्का के साथ पैक की गई सुविधा स्क्रिप्ट का उपयोग कर सकते हैं।
zookeeper-server-start config/zookeeper.properties
kafka-server-start config/server.properties
चरण 3: सुनिश्चित करें कि सब कुछ चल रहा है
अब आपके पास ज़ुकीपर को localhost:2181 और localhost:6667 पर सिंगल काफ्का ब्रोकर localhost:6667 सुनना चाहिए।
एक विषय बनाएँ
हमारे पास केवल एक ब्रोकर है, इसलिए हम बिना प्रतिकृति कारक के एक विषय बनाते हैं और सिर्फ एक विभाजन है:
kafka-topics --zookeeper localhost:2181 \
--create \
--replication-factor 1 \
--partitions 1 \
--topic test-topic
अपने विषय की जाँच करें:
kafka-topics --zookeeper localhost:2181 --list
test-topic
kafka-topics --zookeeper localhost:2181 --describe --topic test-topic
Topic:test-topic PartitionCount:1 ReplicationFactor:1 Configs:
Topic: test-topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
संदेश भेजें और प्राप्त करें
एक उपभोक्ता को लॉन्च करें:
kafka-console-consumer --bootstrap-server localhost:9092 --topic test-topic
दूसरे टर्मिनल पर, एक निर्माता लॉन्च करें और कुछ संदेश भेजें। डिफ़ॉल्ट रूप से, टूल प्रत्येक पंक्ति को ब्रोकर को एक अलग संदेश के रूप में भेजता है, विशेष एन्कोडिंग के बिना। कुछ लाइनें लिखें और CTRL + D या CTRL + C से बाहर निकलें:
kafka-console-producer --broker-list localhost:9092 --topic test-topic
a message
another message
^D
संदेश उपभोक्ता थर्मिनल में दिखाई देने चाहिए।
कफका बंद करो
kafka-server-stop
एक बहु-ब्रोकर क्लस्टर शुरू करें
उपरोक्त उदाहरण केवल एक ब्रोकर का उपयोग करते हैं। एक वास्तविक क्लस्टर सेटअप करने के लिए, हमें बस एक से अधिक काफ्का सर्वर शुरू करना होगा। वे अपने आप ही समन्वय करेंगे।
चरण 1: टकराव से बचने के लिए, हम प्रत्येक ब्रोकर के लिए एक server.properties फ़ाइल बनाते हैं और id , port और logfile कॉन्फ़िगरेशन गुणों को बदलते हैं।
कॉपी करें:
cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties
प्रत्येक फ़ाइल के लिए गुण संपादित करें, उदाहरण के लिए:
vim config/server-1.properties
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/usr/local/var/lib/kafka-logs-1
vim config/server-2.properties
broker.id=2
listeners=PLAINTEXT://:9094
log.dirs=/usr/local/var/lib/kafka-logs-2
चरण 2: तीन दलालों को शुरू करें:
kafka-server-start config/server.properties &
kafka-server-start config/server-1.properties &
kafka-server-start config/server-2.properties &
एक दोहराया गया विषय बनाएँ
kafka-topics --zookeeper localhost:2181 --create --replication-factor 3 --partitions 1 --topic replicated-topic
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0
इस बार, अधिक जानकारी हैं:
- "लीडर" सभी विभाजन के लिए जिम्मेदार नोड है और दिए गए विभाजन के लिए लिखता है। प्रत्येक नोड विभाजन के एक बेतरतीब ढंग से चयनित भाग के लिए नेता होगा।
- "प्रतिकृतियां" नोड्स की सूची है जो इस विभाजन के लिए लॉग को दोहराते हैं चाहे वे नेता हों या भले ही वे वर्तमान में जीवित हों।
- "isr" "इन-सिंक" प्रतिकृतियों का सेट है। यह प्रतिकृतियों की सूची का सबसेट है जो वर्तमान में जीवित है और नेता को पकड़ा जाता है।
ध्यान दें कि पहले बनाया गया विषय अपरिवर्तित रह गया है।
परीक्षण दोष सहिष्णुता
नए विषय पर कुछ संदेश प्रकाशित करें:
kafka-console-producer --broker-list localhost:9092 --topic replicated-topic
hello 1
hello 2
^C
नेता को मार डालो (हमारे उदाहरण में 1)। लिनक्स पर:
ps aux | grep server-1.properties
kill -9 <PID>
विंडोज पर:
wmic process get processid,caption,commandline | find "java.exe" | find "server-1.properties"
taskkill /pid <PID> /f
देखिये क्या हुआ:
kafka-topics --zookeeper localhost:2181 --describe --topic replicated-topic
Topic:replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: replicated-topic Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2,0
नेतृत्व ने ब्रोकर 2 और "1" में स्विच किया है जो अब सिंक में नहीं है। लेकिन संदेश अभी भी वहाँ हैं (उपभोक्ता का उपयोग करके स्वयं की जाँच करें)।
साफ - सफाई
उपयोग कर दो विषयों को हटाएं:
kafka-topics --zookeeper localhost:2181 --delete --topic test-topic
kafka-topics --zookeeper localhost:2181 --delete --topic replicated-topic