Apache Flume Kya Hai

Apache Flume एक उपकरण सेवा डेटा अंतर्ग्रहण तंत्र है जो विभिन्न स्रोतों से एक केंद्रीकृत डेटा स्टोर में लॉग फाइल, ईवेंट आदि जैसे बड़ी मात्रा में स्ट्रीमिंग डेटा एकत्र करने और परिवहन के लिए है. फ्लूम एक अत्यधिक विश्वसनीय वितरित और विन्यास योग्य उपकरण है. यह मुख्य रूप से विभिन्न वेब सर्वर से HDFS में स्ट्रीमिंग डेटा लॉग डेटा की प्रतिलिपि बनाने के लिए डिज़ाइन किया गया है.

Applications of Flume

मान लें कि एक ई-कॉमर्स वेब एप्लिकेशन किसी विशेष क्षेत्र से ग्राहक के व्यवहार का विश्लेषण करना चाहता है. ऐसा करने के लिए उन्हें विश्लेषण के लिए उपलब्ध लॉग डेटा को Hadoop में स्थानांतरित करने की आवश्यकता होगी. यहां अपाचे फ्लूम हमारे बचाव के लिए आता है.

उच्च गति पर HDFS में एप्लिकेशन सर्वर द्वारा उत्पन्न लॉग डेटा को स्थानांतरित करने के लिए फ्लूम का उपयोग किया जाता है.

बिग डेटा जैसा कि हम जानते हैं, बड़े डेटासेट का एक संग्रह है जिसे पारंपरिक कंप्यूटिंग तकनीकों का उपयोग करके संसाधित नहीं किया जा सकता है. बिग डेटा जब विश्लेषण किया जाता है तो मूल्यवान परिणाम देता है. Hadoop एक ओपन-सोर्स फ्रेमवर्क है जो सरल प्रोग्रामिंग मॉडल का उपयोग करके कंप्यूटरों के समूहों में वितरित वातावरण में बिग डेटा को स्टोर और प्रोसेस करने की अनुमति देता है.

Streaming Log Data

आम तौर पर अधिकांश डेटा का विश्लेषण किया जाना है जो विभिन्न डेटा स्रोतों जैसे एप्लिकेशन सर्वर सोशल नेटवर्किंग साइट्स क्लाउड सर्वर और एंटरप्राइज सर्वर द्वारा उत्पादित किया जाएगा. यह डेटा लॉग फाइल और ईवेंट के रूप में होगा.

लॉग फ़ाइल सामान्य रूप से एक लॉग फ़ाइल एक ऐसी फ़ाइल होती है जो एक ऑपरेटिंग सिस्टम में होने वाली घटनाओं कार्यों को सूचीबद्ध करती है. उदाहरण के लिए वेब सर्वर लॉग फ़ाइलों में सर्वर से किए गए हर अनुरोध को सूचीबद्ध करता है.

ऐसे लॉग डेटा की कटाई पर हम इस बारे में जानकारी प्राप्त कर सकते हैं. अनुप्रयोग प्रदर्शन और विभिन्न सॉफ़्टवेयर और हार्डवेयर विफलताओं का पता लगाता है. उपयोगकर्ता व्यवहार और बेहतर व्यापार अंतर्दृष्टि प्राप्त करते हैं.

एचडीएफएस सिस्टम में डेटा ट्रांसफर करने का पारंपरिक तरीका पुट कमांड का उपयोग करना है. आइए देखते हैं कि पुट कमांड का उपयोग कैसे करें.

HDFS Put Command

लॉग डेटा को संभालने में मुख्य चुनौती कई सर्वरों द्वारा उत्पादित इन लॉग को Hadoop वातावरण में ले जाने में है. Hadoop फाइल सिस्टम शेल Hadoop में डेटा डालने और उससे पढ़ने के लिए कमांड प्रदान करता है. नीचे बताए अनुसार पुट कमांड का उपयोग करके आप Hadoop में डेटा डाल सकते हैं.

Problem with Put Command

हम इन स्रोतों से डेटा को HDFS में स्थानांतरित करने के लिए Hadoop की पुट कमांड का उपयोग कर सकते हैं. लेकिन यह निम्नलिखित कमियों से ग्रस्त है.

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

यदि हम पुट कमांड का उपयोग करते हैं तो डेटा को पैक करने की आवश्यकता है और अपलोड के लिए तैयार होना चाहिए. चूंकि वेबसर्वर लगातार डेटा उत्पन्न करते हैं यह एक बहुत ही मुश्किल काम है.

हमें यहां एक समाधान की आवश्यकता है जो कि पुट कमांड की कमियों को दूर कर सके और डेटा जनरेटर से केंद्रीकृत दुकानों विशेषकर एचडीएफएस में "स्ट्रीमिंग डेटा" को कम देरी से स्थानांतरित कर सके.

Problem with HDFS

एचडीएफएस में फ़ाइल एक निर्देशिका प्रविष्टि के रूप में मौजूद है और फ़ाइल की लंबाई को बंद होने तक शून्य माना जाएगा. उदाहरण के लिए यदि कोई स्रोत HDFS में डेटा लिख रहा है और फ़ाइल को बंद किए बिना ऑपरेशन के बीच में नेटवर्क बाधित हो गया तो फ़ाइल में लिखा डेटा खो जाएगा.

इसलिए हमें लॉग डेटा को एचडीएफएस में स्थानांतरित करने के लिए एक विश्वसनीय विन्यास योग्य और रखरखाव योग्य प्रणाली की आवश्यकता है. POSIX फाइल सिस्टम में जब भी हम किसी फाइल को एक्सेस करने के लिए कहते हैं राइटिंग ऑपरेशन अन्य प्रोग्राम तब भी फाइल के कम से कम सेव किए गए हिस्से को इस फाइल को पढ़ सकते हैं. ऐसा इसलिए है क्योंकि फ़ाइल बंद होने से पहले डिस्क पर मौजूद है.

Available Solutions

एचडीएफएस के लिए विभिन्न स्रोतों से स्ट्रीमिंग डेटा लॉग फाइल ईवेंट आदि भेजने के लिए, हमारे पास हमारे निपटान में निम्नलिखित उपकरण उपलब्ध हैं.

Facebook’s Scribe

Scribe एक बेहद लोकप्रिय उपकरण है जिसका उपयोग लॉग डेटा को एग्रीगेट और स्ट्रीम करने के लिए किया जाता है. यह बहुत बड़ी संख्या में नोड्स के पैमाने के लिए डिज़ाइन किया गया है और नेटवर्क और नोड विफलताओं के लिए मजबूत है.

Apache Kafka

काफ्का को अपाचे सॉफ्टवेयर फाउंडेशन द्वारा विकसित किया गया है. यह एक ओपन-सोर्स मैसेज ब्रोकर है. काफ्का का उपयोग करके हम उच्च-थ्रूपुट और कम-विलंबता के साथ फ़ीड को संभाल सकते हैं.

Advantages of Flume

यहाँ Flume के उपयोग के फायदे हैं -

  1. फ़्लुम रूटिंग रूटिंग की सुविधा प्रदान करता है.

  2. फ्लुम विश्वसनीय, दोष सहिष्णु, स्केलेबल, मैनेज करने योग्य और अनुकूलन योग्य है.

  3. Apache Flume का उपयोग करके हम डेटा को किसी भी केंद्रीयकृत स्टोर HBase, HDFS में स्टोर कर सकते है.

  4. फ्लूम में लेन-देन चैनल-आधारित होते हैं जहां दो लेनदेन एक प्रेषक और एक रिसीवर प्रत्येक संदेश के लिए बनाए रखा जाता है। यह विश्वसनीय संदेश वितरण की गारंटी देता है.

  5. जब आने वाले डेटा की दर उस दर से अधिक हो जाती है जिस पर डेटा को गंतव्य पर लिखा जा सकता है तो फ़्लुम डेटा उत्पादकों और केंद्रीकृत दुकानों के बीच मध्यस्थ के रूप में कार्य करता है और उनके बीच डेटा का एक स्थिर प्रवाह प्रदान करता है.

Features of Flume

Flume की कुछ उल्लेखनीय विशेषताएं इस प्रकार हैं -

  1. फ्लुम स्रोतों और गंतव्यों के प्रकार के एक बड़े सेट का समर्थन करता है.

  2. फ़्लू मल्टी-हॉप फ्लो, फैन-इन फैन-आउट फ़्लो, रेफ़रल रूटिंग आदि का समर्थन करता है.

  3. Flume का उपयोग करके हम Hadoop में तुरंत कई सर्वरों से डेटा प्राप्त कर सकते हैं.

  4. धूआं कई वेब सर्वर से डेटा को केंद्रीकृत स्टोर (HDFS, HBase) में कुशलतापूर्वक प्रवेश करता है.

  5. लॉग फ़ाइलों के साथ फ़्लुम का उपयोग फ़ेसबुक और ट्विटर जैसी सोशल नेटवर्किंग साइटों और अमेज़ॅन और फ्लिपकार्ट जैसी ई-कॉमर्स वेबसाइटों द्वारा उत्पादित इवेंट डेटा के विशाल मात्रा में आयात करने के लिए भी किया जाता है.