HBase
 sql >> डेटाबेस >  >> NoSQL >> HBase

Hadoop RecordReader परिचय, कार्य और प्रकार

हमारे पिछले ब्लॉग में, हमने Hadoop . का अध्ययन किया है काउंटर विस्तार से। अब इस ट्यूटोरियल में, हम Hadoop में RecordReader पर चर्चा करने जा रहे हैं।

यहां हम RecordReader की कार्यप्रणाली, Hadoop RecordReader के परिचय को कवर करेंगे। हम इस MapReduce ट्यूटोरियल में MapReduce में RecordReader के प्रकार, Hadoop MapReduce में एकल रिकॉर्ड के आकार पर भी चर्चा करेंगे।

MapReduce में RecordReader क्या है?

एक RecordReader मैपर के लिए इनपुट के बाइट-ओरिएंटेड व्यू को रिकॉर्ड-ओरिएंटेड व्यू में बदल देता है और Reducer प्रसंस्करण के लिए कार्य।

Hadoop RecordReader को समझने के लिए, हमें MapReduce Dataflow को समझना होगा। आइए जानें कि डेटा कैसे प्रवाहित होता है:

MapReduce डेटा प्रोसेसिंग का एक सरल मॉडल है। मानचित्र के लिए इनपुट और आउटपुट और फ़ंक्शन कम करें कुंजी-मूल्य जोड़े . हैं . मानचित्र का सामान्य रूप निम्नलिखित है और कार्यों को कम करता है:

  • मानचित्र: (K1, V1) → सूची (K2, V2)
  • कम करें: (K2, सूची (V2)) → सूची (K3, V3)

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

इसके अलावा, उन्हें रिकॉर्ड में विभाजित करें। यह डेटा को एचडीएफएस में विभाजित (आमतौर पर 64/128 एमबी) की संख्या में विभाजित करता है। इसे इनपुटस्प्लिट के रूप में जाना जाता है। इनपुटस्प्लिट डेटा का तार्किक प्रतिनिधित्व है। MapReduce कार्य में, मानचित्र कार्यों की निष्पादन संख्या इनपुटस्प्लिट की संख्या के बराबर होती है।

‘getSplit ()’ . पर कॉल करके क्लाइंट नौकरी के लिए विभाजन की गणना करता है। फिर इसे एप्लिकेशन मास्टर को भेजा। यह मानचित्र कार्यों को शेड्यूल करने के लिए उनके भंडारण स्थानों का उपयोग करता है जो उन्हें क्लस्टर पर संसाधित करेगा।

उसके बाद नक्शा कार्य विभाजन को createRecordReader . को पास कर देता है () तरीका। उस से, यह विभाजन के लिए RecordReader प्राप्त करता है। RecordReader रिकॉर्ड (की-वैल्यू पेयर) जेनरेट करता है। फिर यह मैप फंक्शन में जाता है।

MapReduce कार्य निष्पादन में Hadoop RecordReader, इनपुटस्प्लिट द्वारा बनाई जा रही सीमाओं के भीतर डेटा का उपयोग करता है। और फिर यह मैपर के लिए की-वैल्यू पेयर बनाता है। फ़ाइल में "प्रारंभ" बाइट स्थिति है।

प्रारंभ में,  Hadoop RecordReader कुंजी/मान युग्म बनाना प्रारंभ करता है। "अंत" वह जगह है जहाँ RecorReader रिकॉर्ड पढ़ना बंद कर देता है। RecordReader में, डेटा को उसके स्रोत से लोड किया जाता है।

फिर डेटा को मैपर द्वारा पढ़ने के लिए उपयुक्त की-वैल्यू पेयर में बदल दिया जाता है। यह तब तक इनपुटस्प्लिट के साथ संचार करता है जब तक कि फ़ाइल का पठन पूरा नहीं हो जाता।

RecorReader Hadoop में कैसे काम करता है?

यह रिकॉर्ड पर इटरेटर से अधिक है। नक्शा कार्य कुंजी-मूल्य जोड़ी उत्पन्न करने के लिए एक रिकॉर्ड का उपयोग करता है जिसे वह मानचित्र फ़ंक्शन में भेजता है। हम इसे नीचे दिए गए मैपर के रन फ़ंक्शन का उपयोग करके भी देख सकते हैं:

public void run(Context context ) throws IOException, InterruptedException{
setup(context);
while(context.nextKeyValue())
{
map(context.setCurrentKey(),context.getCurrentValue(),context)
}
cleanup(context);
}

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

फिर, सेटअप () running चलाने के बाद , nextKeyValue() संदर्भ पर दोहराएगा। यह मैपर के लिए कुंजी और मान ऑब्जेक्ट को पॉप्युलेट करता है। संदर्भ के अनुसार, फ्रेमवर्क रिकॉर्ड रीडर से की-वैल्यू प्राप्त करता है। फिर मानचित्र() . पर जाएं अपना काम करने का तरीका।

इसलिए, मानचित्र कोड में उल्लिखित तर्क के अनुसार मानचित्र फ़ंक्शन प्रक्रियाओं में इनपुट (कुंजी-मान) होता है। जब रिकॉर्ड रिकॉर्ड के अंत तक पहुंच जाता है, तो nextKeyValue() विधि झूठी वापसी करती है।

Hadoop RecordReader के प्रकार

InputFormat Hadoop में  RecordReader इंस्टेंस को परिभाषित करता है। डिफ़ॉल्ट रूप से, TextInputFormat ReordReader का उपयोग करके डेटा को की-वैल्यू पेयर में कनवर्ट करता है। TextInputFormat 2 प्रकार के RecordReaders भी प्रदान करता है जो इस प्रकार है:

<एच4>1. LineRecordReader

यह डिफ़ॉल्ट रिकॉर्ड रीडर है। TextInputFormat यह RecordReader प्रदान करता है। यह इनपुट फ़ाइल की प्रत्येक पंक्ति को नए मान के रूप में भी मानता है। फिर संबंधित कुंजी बाइट ऑफ़सेट है। यदि यह पहला विभाजन नहीं है, तो यह हमेशा विभाजन (या इसके भाग) में पहली पंक्ति को छोड़ देता है।

यह अंत में विभाजन की सीमा के बाद हमेशा एक पंक्ति पढ़ता है (यदि डेटा उपलब्ध है, तो यह अंतिम विभाजन नहीं है)।

<एच4>2. SequenceFileRecordReader

यह Hadoop RecorReader एक अनुक्रम फ़ाइल के शीर्षलेख द्वारा निर्दिष्ट डेटा को पढ़ता है।

एकल रिकॉर्ड का अधिकतम आकार

नीचे दिए गए पैरामीटर का उपयोग करके हम अधिकतम मान निर्धारित करते हैं।

conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);

निष्कर्ष

अंत में, Hadoop RecorReader मैपर को इनपुट (की-वैल्यू) बनाता है। यह डेटा को की-वैल्यू पेयर में बदलने के लिए TextInputFormat का भी उपयोग करता है।

मुझे आशा है कि आपको यह ब्लॉग पसंद आया होगा यदि आपके पास Hadoop RecordReader से संबंधित कोई प्रश्न है, तो बेझिझक हमारे साथ साझा करें। हमें उन्हें हल करने में खुशी होगी।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cloudera ऑपरेशनल डेटाबेस में लेन-देन समर्थन लाना

  2. Apache HBase क्षेत्र विभाजन और विलय

  3. सीडीपी परिचालन डेटाबेस (सीओडी) पर अनुप्रयोगों को तैनात करना

  4. अपाचे HBase प्रतिकृति अवलोकन

  5. MapReduce में Hadoop रेड्यूसर क्लास क्या है?