hadoop mapreduce tutorial with examples what is mapreduce
इस ट्यूटोरियल में, हम यह समझेंगे कि MapReduce क्या है, इसके फायदे और कैसे करता है Hadoop Map उदाहरणों के साथ काम को कम करता है:
पिछले ट्यूटोरियल में, हमने Hadoop HDFS और रीडिंग एंड राइटिंग मैकेनिज्म के बारे में सीखा। अब हम एक और Hadoop Component यानि MapReduce का अन्वेषण करते हैं।
आइए हम विस्तार से निम्नलिखित बातों पर ध्यान दें:
- MapReduce क्या है?
- इसके लाभ
- MapReduce का सटीक तरीका क्या है?
=> एक्सक्लूसिव बिगडेटा ट्रेनिंग ट्यूटोरियल सीरीज़ के लिए यहां जाएं।
b- वृक्ष बनाम b + वृक्ष
आप क्या सीखेंगे:
MapReduce क्या है?
चलो और Hadoop Components के साथ शुरू करते हैं। जैसा कि पहले बताया गया है कि Hadoop के दो मुख्य घटक हैं Hadoop HDFS और Hadoop Map Reduce।
Hadoop HDFS एक फाइल डिस्ट्रीब्यूशन सिस्टम है, जिसका इस्तेमाल कई रैक में भारी मात्रा में डेटा को स्टोर करने के लिए किया जाता है।
यहां हम Hadoop की प्रोसेसिंग यूनिट यानी MapReduce पर चर्चा करेंगे।
अगला सवाल यह है कि 'मैप रिड्यूस क्या है और इसकी आवश्यकता क्यों है?'
Hadoop MapReduce है 'प्रसंस्करण इकाई' और इस घटक का उपयोग करके, हम Hadoop HDFS पर संग्रहीत बिग डेटा को संसाधित कर सकते हैं।
लेकिन सटीक आवश्यकता क्या है? हमें Hadoop के इस घटक की आवश्यकता क्यों है?
Hadoop HDFS पर संग्रहीत बिग डेटा परंपरागत रूप से संग्रहीत नहीं है। डेटा संबंधित DataNodes में संग्रहीत डेटा के विखंडू में विभाजित हो जाता है। इसलिए पूरा डेटा एक केंद्रीकृत स्थान पर संग्रहीत नहीं है।
इसलिए जावा या इस तरह के किसी भी एप्लिकेशन का एक मूल ग्राहक अनुप्रयोग वर्तमान प्रारूप में डेटा को संसाधित नहीं कर सकता है और हमें एक विशेष ढांचे की आवश्यकता है जो संबंधित डेटानेट में संग्रहीत खंडित डेटा ब्लॉक को संसाधित कर सकता है।
प्रसंस्करण Hadoop MapReduce प्रसंस्करण का उपयोग करके किया जाता है।
नक्शा संक्षेप में कम करें
उपरोक्त आरेख मैप रिड्यूस, इसकी विशेषताओं और उपयोगों का अवलोकन देता है।
आइए हम MapReduce के अनुप्रयोगों के साथ शुरू करते हैं और इसका उपयोग कहां किया जाता है। उदाहरण के लिए, के उपयोग में आना क्लासिफायर, अनुक्रमण और खोज और का निर्माण सिफारिश इंजन ई-कॉमर्स साइटों (फ्लिपकार्ट, अमेज़न, आदि) पर भी इसका उपयोग किया जाता है एनालिटिक्स कई कंपनियों द्वारा।
जब हम सुविधाओं के नजरिए से देखते हैं, यह एक है प्रोग्रामिंग मॉडल और के लिए इस्तेमाल किया जा सकता है बड़े पैमाने पर वितरित नमूना Hadoop HDFS की तरह और इसमें पैरेलल प्रोग्रामिंग की क्षमता है जो इसे बहुत उपयोगी बनाती है।
जब हम मैप रिड्यूस में फ़ंक्शन देखते हैं, तो दो फ़ंक्शंस निष्पादित होते हैं यानी मैप फ़ंक्शन और रिड्यूस फ़ंक्शन।
इस तकनीक को Google, Yahoo, Facebook जैसे प्रमुख संगठनों द्वारा कार्यान्वित किया गया है और इसे Apache Hadoop जैसे HDFS, PIG, HIVE द्वारा अपनाया गया है और HBase का उपयोग करके बिग डेटा को डेटा को स्टोर या निष्पादित या संसाधित करने के लिए किया जाता है जिसे No-SQL के रूप में भी जाना जाता है।
मैप-रिड्यूस के फायदे
इस तकनीक के दो फायदे हैं।
(1) समानांतर प्रसंस्करण
बहुत पहला लाभ समानांतर प्रसंस्करण है। मैप रिड्यूस का उपयोग करके हम डेटा को हमेशा समानांतर में प्रोसेस कर सकते हैं।
उपरोक्त आरेख के अनुसार, पाँच स्लेव मशीनें हैं और कुछ डेटा इन मशीनों पर रहते हैं। यहां, डेटा को Hadoop Map Reduce के उपयोग से समानांतर रूप से संसाधित किया जाता है और इस प्रकार प्रसंस्करण तेज हो जाता है।
वास्तव में यहाँ क्या होता है कि डेटा का पूरा हिस्सा Hadoop HDFS द्वारा HDFS ब्लॉक में विभाजित हो जाता है और मैप-रिड्यूस डेटा के इन हिस्सों को प्रोसेस करता है और इस प्रकार प्रोसेसिंग तेज हो जाती है।
# 2) डेटा स्थानीयता
यह एक बहुमुखी चीज है जो Hadoop MapReduce द्वारा दी गई है यानी हम डेटा को प्रोसेस कर सकते हैं कि वह कहाँ है।
इसका क्या मतलब है?
पिछले HDFS ट्यूटोरियल में, हम समझ गए थे कि जिस डेटा को हमने Hadoop क्लस्टर में स्थानांतरित किया है, वह HDFS ब्लॉक में विभाजित हो जाता है और ये ब्लॉक SlaveMachines या DataNodes में सेव हो जाते हैं। मैप-रिड्यूस प्रोसेसिंग और लॉजिक को संबंधित स्लेव नोड्स या डेटा नोड्स में भेजता है, जहां डेटा HDFS डिस्क के रूप में रहता है।
समानांतर में कई स्थानों पर डेटा के एक छोटे से हिस्से पर प्रसंस्करण निष्पादित किया जाता है। यह बहुत समय के साथ-साथ नेटवर्क बैंडविड्थ को बचाता है जो बिग डेटा को एक स्थान से दूसरे स्थान पर ले जाने के लिए आवश्यक है।
बस याद रखें कि हम जो डेटा प्रोसेसिंग कर रहे हैं, वह बिग डेटा चंक्स में टूट गया है, और अगर हम बिग डेटा को सीधे आवंटित नेटवर्क चैनलों के माध्यम से एक केंद्रीकृत मशीन में स्थानांतरित करना शुरू करते हैं और इसे संसाधित करते हैं, तो यह हमें कोई फायदा नहीं देगा क्योंकि हम उपभोग करने जा रहे हैं डेटा को एक केंद्रीकृत सर्वर में ले जाने में संपूर्ण बैंडविड्थ।
लाभ:
इसलिए Hadoop MapReduce का उपयोग करते हुए हम केवल ऐसा नहीं कर रहे हैं 'समानांतर प्रसंस्करण' , हम डेटा को संबंधित स्लेव नोड्स या डेटा नोड्स पर भी संसाधित कर रहे हैं, जहां डेटा की मात्रा मौजूद है और इसलिए हम भी हैं 'नेटवर्क बैंडविड्थ की बहुत बचत' जो बहुत फायदेमंद है।
अंत में, SlaveMachines SlaveMachines पर संग्रहीत डेटा के प्रसंस्करण के साथ किया जाता है और वे मास्टर मशीन को परिणाम वापस भेजते हैं क्योंकि परिणाम SlaveMachines पर संग्रहीत किए गए ब्लॉक के रूप में बड़े नहीं होते हैं। इसलिए यह बहुत अधिक बैंडविड्थ का उपयोग नहीं करेगा।
स्लेव मशीनें मास्टर मशीन को वापस परिणाम भेजती हैं, इन परिणामों को एक साथ एकत्रित किया जाता है और अंतिम परिणाम क्लाइंट मशीन को वापस भेजा जाता है जिसने नौकरी प्रस्तुत की थी।
यहां एक सवाल यह उठता है कि कौन तय करता है कि कौन सा डेटा किस डेटाकोड पर संसाधित किया जाना चाहिए?
क्लाइंट संसाधन प्रबंधक को नौकरी सौंपता है और संसाधन प्रबंधक वह होता है जो संबंधित डेटानेट पर नौकरी को निष्पादित करने की दिशा प्रदान करता है जहां डेटा निवास कर रहा है, यह निकटतम डेटानेट के आधार पर निर्णय लेता है जो उपलब्ध है ताकि बहुत सारे नेटवर्क बैंडविड्थ का उपयोग नहीं किया जाता है।
पारंपरिक बनाम MapReduce Way
यह समझाने के लिए हम बीमा कंपनी के पॉलिसी होल्डर्स एप्लिकेशन काउंट की वास्तविक जीवन सादृश्य लेंगे, हर कोई बीमा कंपनी की नीतियों से अवगत होगा, क्योंकि अधिकांश बड़ी बीमा कंपनियां विभिन्न शहरों में अपनी शाखाएं रखती हैं।
उन शाखाओं में, जीवन बीमा नीतियों के लिए आवेदन करने वाले लोगों की संख्या 'n' है।
चलो एक परिदृश्य लेते हैं जहां हमारी पांच बीमा कंपनी शाखाएं हैं जहां लोग आते हैं और जीवन बीमा नीतियों के लिए आवेदन करते हैं। अब हमारे पास उस बीमा कंपनी का एक मुख्यालय भी है जिसमें उपलब्ध और स्थित शाखाओं की सारी जानकारी है।
हालांकि, जब लोग संबंधित शाखाओं A, B, C, D, E पर जीवन बीमा पॉलिसी के लिए आते हैं और आवेदन करते हैं, तो पॉलिसी के आवेदन संबंधित शाखाओं में ही रखे जाते हैं और यह जानकारी बीमा कंपनी मुख्यालय के साथ साझा नहीं की जाती है।
पारंपरिक तरीका:
आइए देखें कि लोग पारंपरिक रूप से नीति के लिए कैसे आवेदन करते हैं। परंपरागत रूप से इस समस्या को हल करने के लिए, सभी आवेदनों को बीमा कंपनी मुख्यालय में ले जाया जाएगा और फिर आवेदन प्रक्रिया शुरू होगी।
इस मामले में, हमें सभी एप्लिकेशन को इंश्योरेंस कंपनी हेडक्वार्टर में ले जाना होगा, जो एक महंगा मामला है, यानी हमें इंश्योरेंस कंपनी की शाखाओं से सभी एप्लिकेशन को इकट्ठा करना है और इसे इंश्योरेंस कंपनी हेडक्वार्टर में ले जाना है।
इस गतिविधि को करने में भारी प्रयासों के साथ लागत भी शामिल है।
इसका एक अन्य पहलू अति-बीमा कंपनी हेडक्वार्टर है, क्योंकि इसमें उन सभी अनुप्रयोगों को संसाधित करना है जो संबंधित शाखाओं में नीतियों के लिए लोगों द्वारा लागू किए गए थे।
जैसा कि इंश्योरेंस कंपनी उन सभी शाखाओं में आवेदन कर रही है, जो लंबे समय से चल रही हैं। अंत में, यह प्रक्रिया बहुत अच्छी तरह से काम नहीं करती है।
MapReduce Way
आइए देखें कि मैप-रिड्यूस इस समस्या को कैसे हल करता है।
MapReduce डेटा लोकलिटी का अनुसरण करता है यानी यह सभी एप्लिकेशन को बीमा कंपनी मुख्यालय में लाने वाला नहीं है, इसके बजाय, यह संबंधित शाखाओं में अनुप्रयोगों के प्रसंस्करण को समानांतर में ही करेगा।
एक बार हर शाखा में जो आवेदन किए गए थे, वे संसाधित हो गए, वे संसाधित विवरण वापस बीमा कंपनी मुख्यालय को भेजते हैं।
अब इंश्योरेंस कंपनी हेडक्वार्टर को केवल उन संबंधित आवेदनों की संख्या को एकत्रित करना होगा जो संबंधित शाखाओं से भेजे गए थे और विवरण अपने संबंधित डेटाबेस या संग्रहण केंद्र में रखें।
इस तरह, प्रसंस्करण बहुत आसान और त्वरित होगा और पॉलिसी धारकों को कुछ ही समय में लाभ मिलता है।
विस्तार से नक्शा कम करें
हमारे पिछले उदाहरण में, हमारे पास एक इनपुट (एप्लिकेशन) था जो विभिन्न शाखाओं के बीच वितरित किया गया था और प्रत्येक इनपुट को संबंधित मानचित्र फ़ंक्शन द्वारा संसाधित किया गया था।
हम जानते हैं कि MapReduce के दो कार्य हैं, अर्थात् Map फ़ंक्शन और Reduce फ़ंक्शन।
c ++ में int को char में कन्वर्ट करें
संबंधित शाखाओं पर किया गया प्रसंस्करण हिस्सा मैप फ़ंक्शन द्वारा किया गया था। इसलिए प्रत्येक शाखा में प्रत्येक इनपुट (एप्लिकेशन) को मैप फंक्शन का उपयोग करके संसाधित किया गया था, उसके बाद संसाधित विवरण बीमा कंपनी मुख्यालय को भेजा गया था और एकत्रीकरण भाग को कम फ़ंक्शन द्वारा किया जाता है।
एकत्रित संसाधित अनुप्रयोग विवरण आउटपुट के रूप में दिए गए हैं।
हमारे पिछले उदाहरण में यही हुआ है। पूरी प्रक्रिया को मैप टास्क और रिड्यूस टास्क में विभाजित किया गया था।
मैप टास्क को एक इनपुट मिलता है और मैप टास्क का आउटपुट एक इनपुट के रूप में रिड्यूस टास्क को दिया जाता है और यह रिड्यूस टास्क आउटपुट को अंततः क्लाइंट को देता है।
इसे बेहतर तरीके से समझने के लिए, आइए हम MapReduce की शारीरिक रचना के माध्यम से जाने।
MapReduce टास्क एक Key-Value जोड़ी पर काम करता है, इसलिए जब हम किसी Map के बारे में बात करते हैं, तो Map इनपुट को Key-Value के रूप में लेता है और आउटपुट को Key-Value की सूची के रूप में देता है। की-वैल्यू की यह सूची एक फेरबदल के दौर से गुजरती है और इनपुट की और वैल्यू की एक सूची Reducer के पास चली जाती है।
अंत में, Reducer हमें Key-Value जोड़े की एक सूची देता है।
MapReduce उदाहरण - शब्द गणना प्रक्रिया
आइए एक और उदाहरण लेते हैं यानी वर्ड काउंट प्रोसेस द मेप्रेड्यूस वे। यह उदाहरण जावा प्रोग्रामिंग के परिचयात्मक उदाहरण के रूप में ही है अर्थात् 'हैलो वर्ल्ड'।
आरेख के अनुसार, हमारे पास एक इनपुट था और यह इनपुट विभाजित हो जाता है या विभिन्न इनपुट में विभाजित हो जाता है। तो इस प्रक्रिया को इनपुट विभाजन कहा जाता है, और पूरा इनपुट नई लाइन वर्ण के आधार पर डेटा के विभाजन में विभाजित हो जाता है।
बहुत पहली पंक्ति पहली इनपुट है यानी बिगडाटा हडोप मैपराइड दूसरी पंक्ति दूसरी इनपुट है अर्थात् MapReduce हाइव बिगडाटा इसी तरह, तीसरे इनपुट के लिए, यह है Hive Hadoop Hive MapReduce ।
चलिए अगले चरण यानि मैपिंग चरण पर चलते हैं। अब मैपिंग चरण में, हम Key-Value जोड़े की एक सूची बनाते हैं। तो इनपुट कुंजी और मूल्य है, यहां कुंजी लाइन नंबर की भरपाई के अलावा कुछ नहीं है। पंक्ति संख्या कुंजी है और संपूर्ण पंक्ति मान है।
तो, लाइन 1 के लिए ऑफसेट कुंजी है और मान है बिगडाटा हडोप मैपराइड । वास्तविक जीवन में, लाइन नंबर या ऑफसेट एक हेक्साडेसिमल संख्या है, हालांकि, इसे आसान बनाने के लिए, हम केवल इसे नंबर 1 या 2 के रूप में मानेंगे।
तो लाइन 1 की कुंजी होगी और पूरी लाइन का मूल्य होगा। जब यह मैपिंग फ़ंक्शन से गुजर रहा है तो मैपिंग क्या करेगा, यह की-वैल्यू जोड़े की सूची बनाएगा। उदाहरण के लिए, बड़ा डेटा , इसलिए फ़ंक्शन क्या करेगा, यह लाइन के प्रत्येक शब्द को पढ़ेगा और अल्पविराम के बाद एक (1) को चिह्नित करेगा।
यह मान के रूप में एक (1) को चिह्नित करेगा; पसंद बिगडाटा, 1 हैडूप, 1 और मैपरेड्यूस, 1 । यहाँ प्रश्न यह है कि हम प्रत्येक शब्द के बाद एक (1) क्यों रख रहे हैं?
इसकी वजह यह है बड़ा डेटा एक गिनती है बिगडाटा, १ । इसी तरह, हाडोप, १ तथा MapReduce, १ अपने आप में एक गणना है कि क्यों हम एक (1) को एक मान के रूप में चिह्नित करते हैं। दूसरी पंक्ति या कहें पंक्ति 2 के लिए समान तरीके से हमारे पास, MapReduce हाइव बिगडाटा ।
तो उसी अंदाज में, मैपिंग फंक्शन फिर से इसके लिए की-वैल्यू पेयर की लिस्ट बनाता है और इस प्रकार काउंट-वैल्यू पेयर लिस्ट होगी MapReduce, 1 हाइव, 1 तथा बिगडाटा, १ ।
हम लाइन 3 के लिए मैपिंग फ़ंक्शन के परिणामस्वरूप प्राप्त करेंगे, अर्थात। छत्ता, २ होदोप, १ तथा MapReduce, १ ।
इस चरण में शफलिंग चरण पर जाने दें, इस चरण में प्रत्येक कुंजी के लिए एक सूची तैयार की गई है। Shuffling चरण में Key की उपस्थिति दिखाई देगी बड़ा डेटा और यह सूची में मान जोड़ देगा। तो आइए देखें कि यहां क्या हो रहा है।
जैसा कि हम दो आने वाले एरो को देख सकते हैं, पहला एरो लिस्ट 1 से आ रहा है और दूसरा एरो लिस्ट 2 से आ रहा है, इसलिए परिणाम होगा बिगडाटा, (1,1) ।
इसी तरह, जब हम शब्द देखते हैं Hadoop के लिए फिर से Hadoop मानों के लिए एक और सूची तैयार की जाएगी। जैसा कि हम देख सकते हैं कि आने वाले दो तीर शफलिंग की ओर इशारा करते हैं जिसका अर्थ है शब्द Hadoop क्रमशः सूची 2 और सूची 3 से उठाया जाएगा, अर्थात् शफलिंग के बाद अंतिम परिणाम होगा Hadoop, (1, 1) ।
उसी अंदाज में हमें बाकी के शब्द जैसे मिलेंगे छत्ता, (1, 1, 1) तथा MapReduce, (1, 1, 1) मानों की उनकी सूची के साथ या संबंधित सूचियों में शब्दों की उपलब्धता के अनुसार गणना की सूची कहें।
अब कम करने के चरण में आते हैं, इस चरण में, हम उन मूल्यों का एकत्रीकरण शुरू करते हैं जो हर कुंजी के खिलाफ सूची में मौजूद थे। अभीतक के लिए तो बड़ा डेटा, सूची में दो मान मौजूद थे यानी (ग्यारह) इस प्रकार इन मूल्यों को प्रस्तुत किया जाएगा बिगडाटा, २ ।
इसी तरह, के लिए Hadoop मान योग होगा अर्थात् (ग्यारह) सबमिशन होगा हडोप, २ ।
उसी तरीके से मधुमुखी का छत्ता तथा मानचित्र छोटा करना, रिडक्शन फंक्शन के लिए सबमिशन होगा छत्ता, ३ तथा मापांक, ३ क्रमशः।
अंत में, अंतिम परिणाम ग्राहक को वापस भेजा जाएगा जैसा कि 'समग्र MapReduce वर्ड काउंट प्रक्रिया' के नीचे दिए गए चित्र में दिखाया गया है।
कुल मिलाकर MapReduce वर्ड काउंट प्रक्रिया
विंडोज़ 10 के लिए सर्वश्रेष्ठ स्क्रीनशॉट टूल
जब आप MapReduce Way का उपयोग कर रहे हैं तो यह पूरी वर्ड काउंट प्रक्रिया काम करती है।
निष्कर्ष
इस ट्यूटोरियल में, हमने निम्नलिखित सीखा:
- Hadoop Map Reduce the है 'प्रसंस्करण इकाई' Hadoop की।
- Hadoop HDFS द्वारा संग्रहीत बिग डेटा को प्रोसेस करने के लिए हम Hadoop मैप रिड्यूस का उपयोग करते हैं।
- इसका उपयोग Searching & Indexing, Classification, अनुशंसा, और Analytics में किया जाता है।
- इसमें प्रोग्रामिंग मॉडल, समानांतर प्रोग्रामिंग और बड़े पैमाने पर वितरित मॉडल जैसी विशेषताएं हैं।
- MapReduce के डिजाइनिंग पैटर्न हैं: संक्षेपण, शीर्ष अभिलेखों का वर्गीकरण, जुड़ना और चयन जैसे विश्लेषण और विश्लेषण।
- इसके केवल दो कार्य हैं यानी मैपर फंक्शन और रेड्यूसर फंक्शन।
- समानांतर प्रसंस्करण और डेटा स्थानीयता Hadoop MapReduce के अच्छे फायदे हैं।
- MapReduce की प्रक्रिया को छह चरणों में विभाजित किया जाता है यानी INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING और FINAL RESULT।
इस ट्यूटोरियल के लिए यह सब, हमारे आने वाले ट्यूटोरियल में हम कवर करेंगे:
- MapReduce YARN और इसके घटकों के साथ कैसे काम करता है?
- YARN के अनुप्रयोग वर्कफ़्लो।
- स्पार्क क्या है और हडोप और स्पार्क में क्या अंतर है?
=> सभी बिगडेटा ट्यूटोरियल यहां देखें।
अनुशंसित पाठ
- Hadoop क्या है? शुरुआती के लिए Apache Hadoop ट्यूटोरियल
- उदाहरणों के साथ अजगर डेटाइम ट्यूटोरियल
- डेटा मार्ट ट्यूटोरियल - डेटा मार्ट के प्रकार, उदाहरण और कार्यान्वयन
- डेटा वेयरहाउस में आयामी डेटा मॉडल - उदाहरणों के साथ ट्यूटोरियल
- जावा सरणी कोड कोड के साथ लंबाई ट्यूटोरियल
- बिग डेटा ट्यूटोरियल शुरुआती के लिए | बिग डेटा क्या है?
- उदाहरणों के साथ यूनिक्स शैल स्क्रिप्टिंग ट्यूटोरियल
- सेलेनियम उदाहरणों के साथ पाठ ट्यूटोरियल द्वारा तत्व का पता लगाएं