किसी भी I/O सबसिस्टम के विपरीत, Hadoop भी आदिम के एक सेट के साथ आता है। ये आदिम विचार, हालांकि प्रकृति में सामान्य हैं, Hadoop IO सिस्टम के साथ-साथ इसके कुछ विशेष अर्थों के साथ, निश्चित रूप से चलते हैं। Hadoop डेटासेट के मल्टी-टेराबाइट्स से संबंधित है; इन प्राइमेटिव्स पर विशेष ध्यान देने से यह अंदाजा हो जाएगा कि Hadoop डेटा इनपुट और आउटपुट को कैसे हैंडल करता है। हडूप इनपुट आउटपुट सिस्टम पर एक परिप्रेक्ष्य देने के लिए यह आलेख जल्दी से इन प्राइमेटिव्स पर स्किम करता है।
डेटा अखंडता
डेटा अखंडता इसका मतलब है कि डेटा अपने भंडारण, प्रसंस्करण और पुनर्प्राप्ति कार्यों में सटीक और सुसंगत रहना चाहिए। यह सुनिश्चित करने के लिए कि हठ और प्रसंस्करण के दौरान कोई डेटा खो गया या दूषित नहीं हुआ है, Hadoop कड़े डेटा अखंडता बाधाओं को बनाए रखता है। प्रत्येक रीड/राइट ऑपरेशन डिस्क में होता है, इसलिए नेटवर्क के माध्यम से त्रुटियों का खतरा होता है। और, Hadoop द्वारा संसाधित किए जाने वाले डेटा की मात्रा केवल स्थिति को बढ़ा देती है। भ्रष्ट डेटा का पता लगाने का सामान्य तरीका चेकसम है। एक चेकसम गणना की जाती है जब डेटा पहली बार सिस्टम में प्रवेश करता है और पुनर्प्राप्ति प्रक्रिया के दौरान पूरे चैनल में भेजा जाता है। पुनर्प्राप्ति अंत फिर से चेकसम की गणना करता है और प्राप्त लोगों के साथ मेल खाता है। यदि यह बिल्कुल मेल खाता है तो डेटा त्रुटि मुक्त माना जाता है अन्यथा इसमें त्रुटि होती है। लेकिन समस्या यह है - क्या होगा यदि भेजा गया चेकसम स्वयं भ्रष्ट है? यह बहुत कम संभावना है क्योंकि यह एक छोटा डेटा है, लेकिन एक निर्विवाद संभावना नहीं है। स्थिति को कम करने के लिए ईसीसी मेमोरी जैसे सही प्रकार के हार्डवेयर का उपयोग किया जा सकता है।
यह केवल पता लगाना है। इसलिए, त्रुटि को ठीक करने के लिए, एक अन्य तकनीक, जिसे CRC (साइक्लिक रिडंडेंसी चेक) कहा जाता है, का उपयोग किया जाता है।
Hadoop इसे और आगे ले जाता है और डेटा के प्रत्येक 512 (डिफ़ॉल्ट) बाइट्स के लिए एक अलग चेकसम बनाता है। क्योंकि CRC-32 केवल 4 बाइट्स है, स्टोरेज ओवरहेड कोई समस्या नहीं है। सिस्टम में प्रवेश करने वाले सभी डेटा को स्टोरेज या आगे की प्रक्रिया के लिए अग्रेषित करने से पहले डेटानोड्स द्वारा सत्यापित किया जाता है। डेटानोड पाइपलाइन को भेजे गए डेटा को चेकसम के माध्यम से सत्यापित किया जाता है और पाया गया कोई भी भ्रष्टाचार तुरंत क्लाइंट को चेकसम अपवाद के साथ सूचित किया जाता है। . डेटानोड से पढ़ा गया क्लाइंट भी उसी ड्रिल से गुजरता है। सत्यापित ब्लॉक का ट्रैक रखने के लिए डेटानोड्स चेकसम सत्यापन का एक लॉग बनाए रखते हैं। क्लाइंट से ब्लॉक सत्यापन सफलता संकेत प्राप्त करने पर लॉग को डेटानोड द्वारा अद्यतन किया जाता है। इस प्रकार के आँकड़े खराब डिस्क को दूर रखने में मदद करते हैं।
इसके अलावा, DataBlockScanner की मदद से ब्लॉक स्टोर पर आवधिक सत्यापन किया जाता है। पृष्ठभूमि में डेटानोड थ्रेड के साथ चल रहा है। यह डेटा को भौतिक भंडारण मीडिया में भ्रष्टाचार से बचाता है।
Hadoop डेटा की एक प्रति या प्रतिकृति रखता है। यह विशेष रूप से बड़े पैमाने पर भ्रष्टाचार से डेटा पुनर्प्राप्त करने के लिए उपयोग किया जाता है। एक बार जब क्लाइंट किसी ब्लॉक को पढ़ते समय एक त्रुटि का पता लगाता है, तो यह तुरंत डेटानोड को नामेनोड से खराब ब्लॉक के बारे में चेकसम एक्सेप्शन फेंकने से पहले रिपोर्ट करता है। . नामेनोड तब इसे एक खराब ब्लॉक के रूप में चिह्नित करता है और ब्लॉक के किसी भी संदर्भ को इसके प्रतिकृतियों के लिए शेड्यूल करता है। इस तरह, प्रतिकृति को अन्य प्रतिकृतियों के साथ बनाए रखा जाता है और चिह्नित खराब ब्लॉक को सिस्टम से हटा दिया जाता है।
Hadoop में बनाई गई प्रत्येक फ़ाइल के लिए LocalFileSystem , एक ही नाम के साथ एक ही नाम के साथ एक ही निर्देशिका में एक्सटेंशन .
संपीड़न
डेटा की मात्रा को ध्यान में रखते हुए Hadoop संबंधित है, संपीड़न एक लक्जरी नहीं बल्कि एक आवश्यकता है। हडूप द्वारा सही ढंग से उपयोग की जाने वाली फ़ाइल संपीड़न के कई स्पष्ट लाभ हैं। यह भंडारण आवश्यकताओं को कम करता है और नेटवर्क और डिस्क पर डेटा ट्रांसमिशन को गति देने के लिए एक आवश्यक क्षमता है। Hadoop द्वारा आमतौर पर उपयोग किए जाने वाले कई उपकरण, तकनीक और एल्गोरिदम हैं। उनमें से कई काफी लोकप्रिय हैं और युगों से फ़ाइल संपीड़न में उपयोग किए गए हैं। उदाहरण के लिए, gzip, bzip2, LZO, zip, इत्यादि का अक्सर उपयोग किया जाता है।
सीरियलाइज़ेशन
संरचित वस्तुओं को बाइट्स की धारा में बदलने की प्रक्रिया को क्रमबद्धता . कहा जाता है . यह विशेष रूप से नेटवर्क पर डेटा ट्रांसमिशन या डिस्क में कच्चे डेटा को बनाए रखने के लिए आवश्यक है। अक्रमांकन केवल रिवर्स प्रक्रिया है, जहां बाइट्स की एक धारा एक संरचित वस्तु में बदल जाती है। कच्चे बाइट्स के ऑब्जेक्ट कार्यान्वयन के लिए यह विशेष रूप से आवश्यक है। इसलिए, यह आश्चर्य की बात नहीं है कि वितरित कंप्यूटिंग कुछ अलग-अलग क्षेत्रों में इसका उपयोग करता है:अंतर-प्रक्रिया संचार और डेटा दृढ़ता।
Hadoop नोड्स के बीच अंतर-प्रक्रिया संचार को लागू करने के लिए RPC (रिमोट प्रोसीजर कॉल) का उपयोग करता है। इसलिए, RPC प्रोटोकॉल एक संदेश को बाइट्स की धारा में प्रस्तुत करने के लिए क्रमांकन और अक्रमांकन की प्रक्रिया का उपयोग करता है और इसके विपरीत और इसे पूरे नेटवर्क में भेजता है। हालांकि, प्रक्रिया को नेटवर्क बैंडविड्थ का सर्वोत्तम उपयोग करने के लिए पर्याप्त कॉम्पैक्ट होना चाहिए, साथ ही समय के साथ प्रोटोकॉल अपडेट को समायोजित करने के लिए तेज़, इंटरऑपरेबल और लचीला होना चाहिए।
Hadoop का अपना कॉम्पैक्ट और तेज़ क्रमांकन प्रारूप है, लिखने योग्य , कि MapReduce प्रोग्राम कुंजी और मान प्रकार उत्पन्न करने के लिए उपयोग करते हैं।
फ़ाइलों की डेटा संरचना
कुछ उच्च-स्तरीय कंटेनर हैं जो विशेष प्रकार के डेटा को रखने के लिए Hadoop में विशेष डेटा संरचना को विस्तृत करते हैं। उदाहरण के लिए, बाइनरी लॉग को बनाए रखने के लिए, SequenceFile कंटेनर बाइनरी कुंजी-मूल्य जोड़े को बनाए रखने के लिए डेटा संरचना प्रदान करता है। फिर हम कुंजी का उपयोग कर सकते हैं, जैसे LongWritable . द्वारा प्रदर्शित टाइमस्टैम्प और लिखने योग्य . द्वारा मान , जो लॉग की गई मात्रा को संदर्भित करता है।
एक और कंटेनर है, SequenceFile . की एक क्रमबद्ध व्युत्पत्ति , जिसे MapFile . कहा जाता है . यह कुंजी द्वारा सुविधाजनक लुकअप के लिए एक अनुक्रमणिका प्रदान करता है।
ये दो कंटेनर इंटरऑपरेबल हैं और इन्हें एक-दूसरे से बदला जा सकता है।
निष्कर्ष
यह हडूप के इनपुट/आउटपुट सिस्टम का एक त्वरित अवलोकन है। हम बाद के लेखों में कई जटिल विवरणों में तल्लीन होंगे। अगर किसी को सामान्य रूप से I/O सिस्टम की बुनियादी समझ है तो Hadoop इनपुट/आउटपुट सिस्टम को समझना बहुत मुश्किल नहीं है। Hadoop ने अपनी वितरित प्रकृति को बनाए रखने के लिए बस इसमें कुछ अतिरिक्त रस डाला जो बड़े पैमाने पर डेटा में काम करता है। बस इतना ही।
संदर्भ
व्हाइट, टॉम। हडूप, द डेफिनिटिव गाइड, 2009 . ओ'रेली प्रकाशन।