क्या MapReduce सिर्फ डिवाइड और जीत के आवेदन से अधिक कुछ है?


26

एक समस्या को छोटे लोगों तक विभाजित करना जब तक कि व्यक्तिगत समस्याओं को स्वतंत्र रूप से हल नहीं किया जा सकता है और फिर उन्हें मूल प्रश्न का उत्तर देने के लिए संयोजन करके डिवाइड को विभाजित किया जाता है और एल्गोरिथ्म डिजाइन तकनीक को जीता जाता है। [देखें: CLR द्वारा एल्गोरिदम का परिचय]

हाल ही में, कम्प्यूटेशनल समस्याओं को हल करने के लिए विशेष रूप से बहुत बड़े डेटा सेट के क्षेत्र में इस दृष्टिकोण को विभाजित और जीत के बजाय MapReduce के रूप में संदर्भित किया गया है ।

मेरा प्रश्न इस प्रकार है: क्या MapReduce एक मालिकाना ढांचे से अधिक कुछ है जो विभाजन पर निर्भर करता है और दृष्टिकोण पर विजय प्राप्त करता है, या क्या इसके विवरण हैं जो इसे कुछ मामलों में अद्वितीय बनाते हैं?


विभाजित और जीत एल्गोरिदम का एक वर्ग है। MapReduce उस वर्ग का एक उदाहरण है।
मार्टिन स्पामर

जवाबों:


28

यदि आप MapReduce आर्किटेक्चर के बारे में पूछ रहे हैं, तो यह केवल एक विभाजन और जीत की तकनीक है। हालांकि, किसी भी उपयोगी MapReduce वास्तुकला में कुशलतापूर्वक "विभाजित", "जीत" करने के लिए अन्य बुनियादी ढांचे के पहाड़ होंगे, और अंत में समस्या सेट को "कम" करेंगे। एक बड़े MapReduce परिनियोजन (गणना नोड्स के 1000) के साथ काम को विभाजित करने के लिए ये कदम, कुछ गणना करते हैं, और फिर अंत में सभी परिणामों को इकट्ठा करते हैं गैर-तुच्छ। लोड बैलेंसिंग, डेड नोड डिटेक्शन, इंटरिम स्टेट (लंबे समय तक चलने वाली समस्याओं के लिए) जैसी चीजें अपने आप में कठिन समस्या हैं।


1
"कुशलता से" विभाजित करना "," जीतना ", और अंत में" समस्या को कम करना "- यह भ्रामक है:" मानचित्र "चरण के लिए डी एंड सी सॉल्वर की आवश्यकता नहीं है (चूंकि डेटा सख्ती से स्वतंत्र है), आप सिर्फ चंक्स वितरित कर सकते हैं किसी तरह के अनुसूचक का उपयोग करके काम करना; कम कदम के लिए D & C की आवश्यकता होती है।
कोनराड रुडोल्फ

4
शब्द "बस" इस संदर्भ में भ्रामक है।

जैसा कि कहा गया है, यह उत्तर केवल भ्रामक नहीं है, बल्कि बिल्कुल गलत है। MapReduce निश्चित रूप से है नहीं "सिर्फ एक फूट डालो और जीत तकनीक"।
जेरी कॉफिन

10

MapReduce विभाजन और जीत एल्गोरिदम को लागू करने के लिए एक रूपरेखा है एक बेहद स्केलेबल रास्ते में , स्वचालित रूप से कंप्यूटर की एक मनमाने ढंग से बड़े क्लस्टर में नोड्स के लिए इकाइयों के- काम बांट कर और इकाई के- काम पुनर्वितरण द्वारा स्वचालित रूप से निपटने के अलग-अलग नोड्स की विफलताओं एक और नोड के लिए।

यह एक सुपर-परिष्कृत अवधारणा नहीं है, लेकिन बुनियादी ढांचे का एक बहुत ही उपयोगी टुकड़ा है।


10

MapReduce अधिकांश विभाजन से विचलित होता है और सिस्टम को काफी मौलिक तरीके से जीतता है, लेकिन एक इतना सरल है कि कई लोग इसे लगभग याद करते हैं। इसका वास्तविक प्रतिभावान मध्यवर्ती परिणामों को टैग करने में है।

एक ठेठ (पिछले) में विभाजित और सिस्टम को जीतना, आप काम को क्रमिक रूप से विभाजित करते हैं, समानांतर में काम के पैकेट को निष्पादित करते हैं, और फिर उस काम से परिणामों को क्रमिक रूप से फिर से मिलाते हैं।

MapReduce में, आप काम को क्रमिक रूप से विभाजित करते हैं, समानांतर में काम के पैकेट निष्पादित करते हैं, और परिणामों को टैग करने के लिए बताते हैं कि कौन से परिणाम अन्य परिणामों के साथ चलते हैं। विलय तब एक ही टैग के साथ सभी परिणामों के लिए सीरियल है, लेकिन उन परिणामों के समानांतर में निष्पादित किया जा सकता है जिनके अलग-अलग टैग हैं।

अधिकांश पिछली प्रणालियों में, मर्ज कदम सभी के लिए एक अड़चन बन गया लेकिन वास्तव में सबसे तुच्छ कार्य है। MapReduce के साथ यह तब भी हो सकता है यदि कार्यों की प्रकृति के लिए आवश्यक है कि सभी विलय को क्रमिक रूप से किया जाए। यदि, हालांकि, कार्य परिणामों के कुछ हद तक समानांतर विलय की अनुमति देता है, तो MapReduce उस संभावना का लाभ उठाने का एक सरल तरीका देता है। अधिकांश अन्य प्रणालियां दो चीजों में से एक करती हैं: या तो सभी विलय को क्रमिक रूप से निष्पादित करें क्योंकि यह कुछ कार्यों के लिए आवश्यक हो सकता है, या किसी विशेष कार्य के लिए समानांतर विलय को सांख्यिकीय रूप से परिभाषित कर सकता है। MapReduce आपको मर्ज करने के चरण में पर्याप्त डेटा स्वचालित रूप से यथासंभव समानांतर में शेड्यूल करने के लिए देता है, जबकि यह सुनिश्चित करते हुए (आप मैपिंग चरण में गलतियां नहीं की हैं) कि सुसंगतता बनाए रखी जाती है।

यह भी ध्यान दें कि MapReduce में, यह निहित है कि सभी चरण पुनरावर्ती हो सकते हैं, इसलिए मेरे पास एक प्रारंभिक मानचित्रण चरण हो सकता है जो एक बड़े कार्य को 5 छोटे कार्यों में विभाजित करता है जिन्हें समानांतर में निष्पादित किया जा सकता है - लेकिन उनमें से प्रत्येक हो सकता है (में) बारी) अन्य छोटे समानांतर कार्यों की एक संख्या के लिए मैप किया जाता है, और इसी तरह।

यह मैपिंग और कम करने वाले दोनों पक्षों पर एक पेड़ की संरचना की ओर जाता है जो कई मशीनों का लाभ उठाने के लिए एक बड़े कार्य को जल्दी से पर्याप्त टुकड़ों में तोड़ देता है।


7

MapReduce है नहीं बस एक फूट डालो और जीत तकनीक है, हालांकि यह कई उदाहरण में इस तरह लग रहा है।

मैपिंग स्टेप में आप एक-से-कई रिलेशन कर सकते हैं। इस प्रकार आप केवल मामलों में विभाजित नहीं हो रहे हैं।

नक्शे के बीच और कम करें (या तो कार्यान्वयन के आधार पर) एक प्रकार या हैशिंग कदम। समग्र संसाधन आवश्यकताओं के लिए इस ऑपरेशन की दक्षता अत्यंत महत्वपूर्ण है। इसका विवरण एप्लिकेशन प्रोग्रामर के लिए अदृश्य है, लेकिन यह चरण फ्रेमवर्क का दिल है।

कम करने का ऑपरेशन एक प्रकार का मर्ज है। जिसे एक जीत के रूप में माना जा सकता है, लेकिन व्यवहार में या तो "बाद के उपयोग के लिए डेटा उत्सर्जित करें" या "डेटा स्टोर में डेटा सहेजना" हो जाता है। (ध्यान दें, यदि आपके पास बड़े डेटा सेट हैं, तो आप वास्तव में सब कुछ वितरित करना चाहते हैं, जिसमें इनपुट और अंतिम परिणाम शामिल हैं। इसलिए एक वितरित कुंजी / मूल्य स्टोर इनपुट प्राप्त करने और आउटपुट को संग्रहीत करने के लिए दोनों के रूप में समझ में आता है।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.