Apache Flume - Hadoop में डेटा ट्रांसफर
Big Data,जैसा कि हम जानते हैं, बड़े डेटासेट का एक संग्रह है जिसे पारंपरिक कंप्यूटिंग तकनीकों का उपयोग करके संसाधित नहीं किया जा सकता है। बिग डेटा, जब विश्लेषण किया जाता है, तो मूल्यवान परिणाम देता है।Hadoop एक ओपन-सोर्स फ्रेमवर्क है जो सरल प्रोग्रामिंग मॉडल का उपयोग करके कंप्यूटर के समूहों में वितरित वातावरण में बिग डेटा को स्टोर और प्रोसेस करने की अनुमति देता है।
स्ट्रीमिंग / लॉग डेटा
आम तौर पर, अधिकांश डेटा का विश्लेषण किया जाता है जो विभिन्न डेटा स्रोतों जैसे एप्लिकेशन सर्वर, सोशल नेटवर्किंग साइट्स, क्लाउड सर्वर और एंटरप्राइज सर्वर द्वारा उत्पादित किया जाएगा। यह डेटा के रूप में होगाlog files तथा events।
Log file - सामान्य तौर पर, एक लॉग फ़ाइल एक है fileएक ऑपरेटिंग सिस्टम में होने वाली घटनाओं / कार्यों को सूचीबद्ध करता है। उदाहरण के लिए, वेब सर्वर लॉग फ़ाइलों में सर्वर से किए गए हर अनुरोध को सूचीबद्ध करता है।
ऐसे लॉग डेटा की कटाई पर, हम इसके बारे में जानकारी प्राप्त कर सकते हैं -
- अनुप्रयोग प्रदर्शन और विभिन्न सॉफ़्टवेयर और हार्डवेयर विफलताओं का पता लगाता है।
- उपयोगकर्ता व्यवहार और बेहतर व्यापार अंतर्दृष्टि प्राप्त करते हैं।
एचडीएफएस प्रणाली में डेटा स्थानांतरित करने की पारंपरिक विधि का उपयोग करना है putआदेश। आइए देखते हैं कि कैसे उपयोग करना हैput आदेश।
HDFS ने कमांड डाल दी
लॉग डेटा को संभालने में मुख्य चुनौती कई सर्वरों द्वारा उत्पादित इन लॉग को Hadoop वातावरण में ले जाने में है।
Hadoop File System ShellHadoop में डेटा डालने और उससे पढ़ने के लिए कमांड प्रदान करता है। आप का उपयोग करके Hadoop में डेटा सम्मिलित कर सकते हैंput जैसा कि नीचे दिखाया गया है।
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
डाल कमान के साथ समस्या
हम उपयोग कर सकते हैं putइन स्रोतों से डेटा को HDFS में स्थानांतरित करने के लिए Hadoop की कमान। लेकिन, यह निम्नलिखित कमियों से ग्रस्त है -
का उपयोग करते हुए put कमांड, हम ट्रांसफर कर सकते हैं only one file at a timeजबकि डेटा जनरेटर बहुत अधिक दर पर डेटा उत्पन्न करते हैं। चूंकि पुराने डेटा पर किए गए विश्लेषण कम सटीक हैं, इसलिए हमें वास्तविक समय में डेटा स्थानांतरित करने के लिए एक समाधान की आवश्यकता है।
अगर हम उपयोग करते हैं putआदेश, डेटा को पैक करने की आवश्यकता है और अपलोड के लिए तैयार होना चाहिए। चूंकि वेबसर्वर लगातार डेटा उत्पन्न करते हैं, यह एक बहुत मुश्किल काम है।
हमें यहां एक समाधान की आवश्यकता है जो कमियों को दूर कर सकता है put कमांड और "जेनरेटिंग डेटा" को डेटा जनरेटर से केंद्रीकृत दुकानों (विशेष रूप से एचडीएफएस) में कम देरी से स्थानांतरित करें।
HDFS के साथ समस्या
एचडीएफएस में, फ़ाइल एक निर्देशिका प्रविष्टि के रूप में मौजूद है और फ़ाइल की लंबाई को बंद होने तक शून्य माना जाएगा। उदाहरण के लिए, यदि कोई स्रोत एचडीएफएस में डेटा लिख रहा है और ऑपरेशन के बीच में (फ़ाइल को बंद किए बिना) नेटवर्क बाधित हो गया, तो फ़ाइल में लिखा डेटा खो जाएगा।
इसलिए हमें लॉग डेटा को एचडीएफएस में स्थानांतरित करने के लिए एक विश्वसनीय, कॉन्फ़िगर करने योग्य और रखरखाव योग्य प्रणाली की आवश्यकता है।
Note- POSIX फाइल सिस्टम में, जब भी हम किसी फाइल को एक्सेस कर रहे होते हैं (जैसे कि राइटिंग ऑपरेशन करते हैं), अन्य प्रोग्राम अभी भी इस फाइल (कम से कम फाइल के सहेजे गए हिस्से) को पढ़ सकते हैं। ऐसा इसलिए है क्योंकि फ़ाइल बंद होने से पहले डिस्क पर मौजूद है।
उपलब्ध समाधान
एचडीएफएस के लिए विभिन्न स्रोतों से स्ट्रीमिंग डेटा (लॉग फाइल, ईवेंट आदि आदि) भेजने के लिए, हमारे पास निम्नलिखित उपकरण उपलब्ध हैं -
फेसबुक के Scribe
Scribe एक बेहद लोकप्रिय उपकरण है जिसका उपयोग लॉग डेटा को एग्रीगेट और स्ट्रीम करने के लिए किया जाता है। यह बहुत बड़ी संख्या में नोड्स के पैमाने के लिए डिज़ाइन किया गया है और नेटवर्क और नोड विफलताओं के लिए मजबूत है।
अपाचे काफ्का
काफ्का को अपाचे सॉफ्टवेयर फाउंडेशन द्वारा विकसित किया गया है। यह एक ओपन-सोर्स मैसेज ब्रोकर है। काफ्का का उपयोग करके, हम उच्च-थ्रूपुट और कम-विलंबता के साथ फ़ीड को संभाल सकते हैं।
अपाचे फ्लूम
अपाचे फ़्लू एक उपकरण / सेवा / डेटा अंतर्ग्रहण तंत्र है जो बड़ी मात्रा में स्ट्रीमिंग डेटा जैसे लॉग डेटा, ईवेंट्स (आदि ...) को एकत्रित करने और एकत्र करने के लिए एक केंद्रीकृत डेटा स्टोर से एकत्र करता है।
यह एक अत्यधिक विश्वसनीय, वितरित और कॉन्फ़िगर करने योग्य उपकरण है जो मुख्य रूप से HDFS के विभिन्न स्रोतों से स्ट्रीमिंग डेटा को स्थानांतरित करने के लिए डिज़ाइन किया गया है।
इस ट्यूटोरियल में, हम कुछ उदाहरणों के साथ फ्लूम का उपयोग करने के तरीके के बारे में विस्तार से चर्चा करेंगे।