MapReduce में नवीनता क्या है?


67

कुछ साल पहले, MapReduce का वितरण प्रोग्रामिंग की क्रांति के रूप में किया गया था। आलोचक भी रहे हैं लेकिन बड़े और उत्साह से भरे थे। यह भी पेटेंट हो गया! [1]

यह नाम कार्यात्मक प्रोग्रामिंग में mapऔर उसकी याद दिलाता है reduce, लेकिन जब मैं पढ़ता हूं (विकिपीडिया)

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

चरण कम करें: मास्टर नोड तब सभी उप-समस्याओं के उत्तर एकत्र करता है और उन्हें आउटपुट बनाने के लिए किसी तरह से जोड़ता है - समस्या का उत्तर जो मूल रूप से हल करने की कोशिश कर रहा था।

या [२]

एमएपी के आंतरिक: [...] एमएपी इनपुट मूल्य को शब्दों में विभाजित करता है। [...] एमएपी का अर्थ इनपुट के प्रत्येक दिए गए कुंजी / मूल्य जोड़ी को संभावित रूप से कई मध्यवर्ती कुंजी / मूल्य जोड़े के साथ जोड़ना है।

REDUCE के आंतरिक: [...] [REDUCE] अनिवार्य एकत्रीकरण (कहते हैं, कमी) करते हैं: कई मान लेते हैं, और उन्हें एक मूल्य पर कम करते हैं।

मैं मदद नहीं कर सकता, लेकिन सोचता हूं: यह विभाजन और विजय (मेरजसॉर्ट के अर्थ में), सादा और सरल है! तो, MapReduce में वैचारिक (वैचारिक) नवीनता कहीं है, या यह कुछ परिदृश्यों में उपयोगी पुराने विचारों का एक नया कार्यान्वयन है?


  1. यूएस पेटेंट 7,650,331: "सिस्टम और कुशल बड़े पैमाने पर डेटा प्रसंस्करण के लिए विधि" (2010)
  2. Google का MapReduce प्रोग्रामिंग मॉडल - R. Lämmel (2007) द्वारा पुनरीक्षित

7
कोई नवीनता नहीं है। मैं इसका उत्तर नहीं दूंगा, लेकिन यह मेरा दृढ़ मत है कि गणना में कुछ भी नया नहीं है, या यहां तक ​​कि वितरित कंप्यूटिंग की खोज MapReduce द्वारा की गई थी।
eda-qa mort-ora-y

@ आर्यभट्ट: यदि नवीनता है, तो इस सवाल का एक अच्छा, रचनात्मक जवाब है। अगर वहाँ नहीं है, तो छोटा साबित करने के लिए कहा जा सकता है (शायद एक पुरानी तकनीक को MapReduce को कम करने के अलावा) स्पष्ट रूप से सच है। लेकिन अगर आपको लगता है कि हर तरह से, वोट!
राफेल

@ edA-qamort-ora-y: उस स्थिति में, हमें पुराने शब्दों में MapReduce व्यक्त करने में सक्षम होना चाहिए, और यह अच्छे उत्तर के लिए बनायेगा !
राफेल

1
@ राफेल, मैं सहमत हूं, लेकिन मुझे यकीन नहीं है कि मैं ऐसा कर सकता हूं। हालाँकि, मैं निरीक्षण कर सकता हूं, जैसा कि यहां बताया गया है (पहला उद्धरण), मर्ज सॉर्ट मैप / कम करने की सटीक विधि का उपयोग करता है। यह वास्तव में, शून्य परिवर्तन के साथ वितरित किया जा सकता है।
edA-qa mort-ora-y

जवाबों:


47

मैं मदद नहीं कर सकता लेकिन सोचता हूं: यह विभाजन और विजय है, सादा और सरल!

M / R विभाजित और विजय नहीं है। इसमें एल्गोरिथ्म के बार-बार किए गए अनुप्रयोग में पिछले इनपुट का एक छोटा सबसेट शामिल नहीं है। यह एक पाइपलाइन है (सरल कार्यों की संरचना के रूप में निर्दिष्ट एक फ़ंक्शन) जहां पाइपलाइन चरण बारी-बारी से नक्शा कर रहे हैं और संचालन को कम करते हैं। विभिन्न चरण अलग-अलग ऑपरेशन कर सकते हैं।


तो, कहीं न कहीं MapReduce में वैचारिक (वैचारिक) नवीनता है, या यह कुछ परिदृश्यों में उपयोगी पुराने विचारों का एक नया कार्यान्वयन है?

MapReduce गणना के सिद्धांत में नई जमीन नहीं तोड़ता है - यह एक समस्या को सरल ऑपरेशन में विघटित करने का एक नया तरीका नहीं दिखाता है। यह दर्शाता है कि समस्या के एक विशेष वर्ग के लिए विशेष सरल ऑपरेशन व्यावहारिक हैं।


MapReduce कागज के योगदान था

  1. दो अच्छी तरह से समझे गए ऑर्थोगोनल ऑपरेटरों की एक पाइपलाइन का मूल्यांकन करना जो किसी विशेष समस्या पर कुशलतापूर्वक और गलती से सहिष्णुता से वितरित किया जा सकता है: बड़े कॉर्पस का पाठ सूचकांक बनाना
  2. उस समस्या पर मानचित्र-निर्धारण को कम करना यह दर्शाने के लिए कि नोड्स के बीच कितना डेटा स्थानांतरित किया गया है और चरणों में विलंबता अंतर समग्र विलंबता को कैसे प्रभावित करते हैं
  3. यह दिखाते हैं कि सिस्टम की गलती को कैसे सहिष्णु बनाया जा सकता है ताकि गणना के दौरान मशीन विफलताओं को स्वचालित रूप से मुआवजा दिया जा सके
  4. विशिष्ट उपयोगी कार्यान्वयन विकल्पों और अनुकूलन की पहचान करना

आलोचकों में से कुछ इन वर्गों में आते हैं:

  1. "गणना के सिद्धांत में नक्शा / कमी नया आधार नहीं तोड़ती है।" सच। मूल पेपर का योगदान यह था कि विशिष्ट प्रकार के अनुकूलन वाले इन अच्छी तरह से समझे गए ऑपरेटरों का उपयोग वास्तविक समस्याओं को आसानी से हल करने के लिए किया गया था और गलती से सहिष्णुता से एक-बंद समाधान।
  2. "यह वितरित संगणना आसानी से मानचित्र में विघटित नहीं होती है और संचालन को कम करती है"। काफी उचित है, लेकिन कई करते हैं।
  3. "एन मैप / कम चरणों की एक पाइपलाइन के लिए किसी भी परिणाम के उत्पादन से पहले पाइपलाइन के कम चरणों की संख्या के लिए आनुपातिक आवश्यकता होती है।" शायद सही। कम ऑपरेटर को अपना पूरा इनपुट प्राप्त करने से पहले उसके सभी इनपुट प्राप्त करने होंगे।
  4. "इस उपयोग के मामले के लिए नक्शा / कमी ओवरकिल है।" शायद। जब इंजीनियरों को एक चमकदार नया हथौड़ा मिलता है, तो वे किसी भी चीज की तलाश में चले जाते हैं जो नाखून की तरह दिखता है। इसका मतलब यह नहीं है कि हथौड़ा एक निश्चित जगह के लिए एक अच्छी तरह से बनाया उपकरण नहीं है।
  5. "मैप / कम करना एक रिलेशनल डीबी के लिए एक खराब प्रतिस्थापन है।" सच। यदि आपके डेटा-सेट के लिए एक संबंधपरक डीबी तराजू है तो आपके लिए अद्भुत है - आपके पास विकल्प हैं।

खैर, वे मूल पेपर को "सेमिनल" कहते हैं, इसलिए मुझे कुछ नया करने की उम्मीद है। मुझे आपका पहला पैराग्राफ नहीं मिला: स्पष्ट रूप से बहुत सारी एल्गोरिथम तकनीकें हैं जो विभाजित नहीं हैं और न ही जीतती हैं । यदि MapReduce "केवल" एक विशिष्ट समस्या सेट के लिए d & c का एक कुशल कार्यान्वयन है, तो यह निश्चित रूप से एल्गोरिथम (imho) में कुछ भी सेमिनल या पेटेंट-योग्य नहीं है । यह नहीं कहता कि यह एक अच्छी प्रणाली नहीं है। ध्यान दें कि मेरा समालोचक खुद MapReduce के साथ कम है (मुझे लगता है कि यह इसके लिए क्या अच्छा है) समुदाय द्वारा इसके स्वागत के साथ है।
राफेल

1
@ राफेल, मुझे नहीं लगता कि एम / आर आप से जुड़े हुए अर्थों में विभाजित और जीत है। इसमें एक एल्गोरिथ्म के दोहराए गए एप्लिकेशन को मूल इनपुट के छोटे सबसेट में शामिल नहीं किया गया है। यह एक पाइपलाइन है, जहां पाइपलाइन चरण बारी-बारी से नक्शा बनाते हैं और संचालन को कम करते हैं।
माइक सैमुअल

हुह, सच। मैंने व्याख्या की "एक श्रमिक नोड बदले में फिर से ऐसा कर सकता है, जिससे एक बहु-स्तरीय वृक्ष संरचना हो सकती है।" इस तरह से, लेकिन इसका मतलब यह नहीं है कि हर स्तर पर ऐसा ही होता है।
राफेल

1
@ ex0du5, मुझे लगता है कि आप इसे दावों के लिए निंदा कर सकते हैं जो यह नहीं करता है। "कई प्रणालियों ने प्रतिबंधित प्रोग्रामिंग मॉडल प्रदान किए हैं और कम्प्यूटेशन को स्वचालित रूप से समानांतर करने के लिए प्रतिबंधों का उपयोग किया है। ... MapReduce को इन मॉडलों में से कुछ का एक सरलीकरण और आसवन माना जा सकता है जो कि बड़ी वास्तविक दुनिया की गणनाओं के साथ हमारे अनुभव के आधार पर है। ... इसके विपरीत। , ज्यादातर समानांतर प्रसंस्करण प्रणाली केवल छोटे पैमानों पर लागू की गई हैं और प्रोग्रामर को मशीन की विफलता से निपटने के विवरण को छोड़ देती हैं। " यह उस पर राबिन और वैलिएंट द्वारा कागजात का हवाला देता है, लेकिन लिस्कोव कागज नहीं।
माइक सैमुअल

1
@ ex0du5, काफी साफ। मैंने सोचा था कि "" गणना के सिद्धांत में नक्शा / कमी नई जमीन को नहीं तोड़ती है। " पर्याप्त स्पष्ट था, लेकिन मैंने योगदान की सूची को फिर से लिखा है।
माइक सैमुअल

21

EDIT (मार्च 2014) मुझे कहना चाहिए कि मैंने तब से कम्प्यूटरीकरण के मॉडलरेड्यूस-टाइप मॉडल के लिए एल्गोरिदम पर अधिक काम किया है, और मुझे लगता है कि मैं अत्यधिक नकारात्मक हो रहा था। डिवाइड-कंप्रेस-कॉन्कर तकनीक मैं नीचे के बारे में बात करता हूं आश्चर्यजनक रूप से बहुमुखी है, और एल्गोरिदम का आधार हो सकता है जो मुझे लगता है कि गैर-तुच्छ और दिलचस्प हैं।


मुझे एक उत्तर देने की पेशकश करें जो कि समझ के मामले में माइक के लिए बहुत नीच होगा, लेकिन गणना / एल्गोरिथम सिद्धांत सिद्धांत के एक मॉडल से।

O(nϵ)o(logn)

O(1)

  • समस्या का विभाजन (अक्सर बेतरतीब ढंग से)
  • समानांतर में प्रत्येक विभाजन पर कुछ गणना करें और गणना के परिणाम को कॉम्पैक्ट रूप से दर्शाएं
  • एक ही प्रोसेसर पर सभी कॉम्पैक्ट रूप से प्रतिनिधित्व किए गए उपप्रोलेम समाधानों को मिलाएं और वहां गणना को पूरा करें

nO(n)n

अब, मुझे लगता है कि यह वास्तव में विभाजन और जीत पर एक दिलचस्प मोड़ है, यह मोड़ यह है कि विभाजन के बाद आपको उपप्रोलेम समाधानों को संपीड़ित करने की आवश्यकता है ताकि एक एकल प्रोसेसर जीत सके। हालाँकि, यह वास्तव में केवल तकनीक है जो हम अब तक के साथ आए हैं। यह विरल रेखांकन के साथ समस्याओं पर विफल रहता है, उदाहरण के लिए विरल कनेक्टिविटी जैसे। स्ट्रीमिंग मॉडल के साथ इसका विरोध करें, जिससे नए विचारों का खजाना मिला, जैसे कि फ्लाजोलेट और मार्टिन का सरल नमूना एल्गोरिथ्म, मिश्रा एंड ग्रिज़ का निर्धारक युग्मन एल्गोरिदम, सरल स्केचिंग तकनीकों की शक्ति, आदि।

प्रोग्रामिंग प्रतिमान के रूप में, मानचित्र कम करना बहुत सफल रहा है। मेरी टिप्पणियों के संबंध में मानचित्र गणना के एक दिलचस्प मॉडल के रूप में घटता है। अच्छे सैद्धांतिक मॉडल थोड़े अजीब होते हैं। यदि वे वास्तविकता का बहुत बारीकी से पालन करते हैं, तो वे अनजाने हैं, लेकिन इससे भी महत्वपूर्ण बात, (मशीन लर्निंग से एक शब्द उधार लेने के लिए) प्रमेय उन मॉडलों के लिए साबित हुआ जो बहुत विशिष्ट हैं सामान्यीकरण नहीं करते हैं, अर्थात अन्य मॉडलों में पकड़ नहीं है। इसलिए हम जितना संभव हो उतना सार निकालना चाहते हैं, जबकि उपन्यास एल्गोरिदम के साथ आने के लिए हमें चुनौती देने के लिए अभी भी पर्याप्त नहीं है। अंत में, उन नए विचारों को अंततः वास्तविक दुनिया में अपना रास्ता खोजने में सक्षम होना चाहिए। PRAM एक अवास्तविक मॉडल है, जिसने दिलचस्प विचारों को जन्म दिया लेकिन वे विचार वास्तविक विश्व समानांतर गणना के लिए शायद ही कभी साबित हुए। दूसरी ओर, स्ट्रीमिंग भी अवास्तविक है, लेकिन यह एल्गोरिथम विचारों को प्रेरित करता है जो वास्तव में वास्तविक दुनिया में कार्यरत हैं। देखकाउंट-मिन स्केच । स्केचिंग तकनीक वास्तव में मैप कम करने के आधार पर सिस्टम में भी उपयोग की जाती है।


हालांकि, M / R PRAM या स्ट्रीम की तुलना में अधिक यथार्थवादी (उपयोगी) मॉडल है। (कम से कम कुछ समस्याओं के बड़े सेट के लिए।)
ज़ोडरैप

"आपको उपप्रोलेम समाधानों को संपीड़ित करने की आवश्यकता है ताकि एक एकल प्रोसेसर जीत सके" - आप यह कहते प्रतीत होते हैं कि M / R द्वारा हल की जा सकने वाली समस्याओं का समूह उन सबसेटों का एक उपसमूह है जिनके लिए ट्रैफ़िक कैश-अवेयर या कैश मौजूद है -विभिन्न समाधान। यदि यह सही है, तो मुझे यह लगता है कि यह कथन अधिकांश वितरित गणना योजनाओं के लिए समान रूप से लागू होता है।
माइक सैमुअल

1
@Xodarap जो अच्छी तरह से हो सकता है। यहाँ मैं एक विशुद्ध रूप से एल्गोरिदम सिद्धांतवादी दृष्टिकोण का उपयोग कर रहा हूँ: एक मॉडल उपयोगी है अगर यह नए एल्गोरिथम दृष्टिकोण की ओर जाता है। उस उपाय से, स्ट्रीमिंग पूरी तरह से यथार्थवादी नहीं है, लेकिन कई नई तकनीकों का नेतृत्व किया है जो वास्तव में अभ्यास में उपयोगी हैं। मुद्दा यह है कि क्या सही अमूर्तता है जो नई सोच की ओर ले जाती है। वर्तमान एमआर अमूर्त को मिश्रित सफलता मिली है (लेकिन कुछ सफलता, मुझे लगता है)
साशो निकोलेव

1
@MikeSamuel को उस वाक्य में "आवश्यकता" का मतलब है कि यह वही है जो तकनीक को काम करने की आवश्यकता है, न कि यह केवल ऐसा करना संभव है। एमआर के लिए कोई सैद्धांतिक नकारात्मक परिणाम नहीं हैं जो मुझे पता है। मेरी शिकायत यह नहीं है कि MR, सीओ से कड़ाई से कम शक्तिशाली है। यह है कि हमने मॉडल से प्रेरित नई एल्गोरिथम सोच को नहीं देखा है (जो कि सिस्टम के लिए ठीक है, लेकिन गणना के मॉडल के लिए निराशाजनक है)। दूसरी ओर कैश विस्मृति अपने आप में एक अद्भुत विचार है
साशो निकोलेव

@ सशाओनिकोलोव, अंडरस्टूड। समझाने के लिए धन्यवाद।
माइक सैमुअल

6

मैं आपसे पूरी तरह से सहमत हूं। एक वैचारिक दृष्टिकोण से, वास्तव में कुछ भी नया नहीं है: मैप / रिड्यूस को मूल रूप से समानांतर कम्प्यूटिंग में डेटा-फ्लो प्रोग्रामिंग मॉडल के रूप में जाना जाता था। हालाँकि, व्यावहारिक दृष्टिकोण से, Google द्वारा प्रस्तावित और उसके बाद के ओपन-सोर्स कार्यान्वयन के साथ मैप / रिड्यूस ने क्लाउड कम्प्यूटिंग को भी बढ़ावा दिया है और अब यह बहुत ही सरल समानांतर डिकम्पोजिशन और प्रोसेसिंग के लिए काफी लोकप्रिय है। बेशक, यह जटिल डोमेन या कार्यात्मक decompositions की आवश्यकता के लिए किसी और चीज के लिए अच्छी तरह से अनुकूल नहीं है।


3

मुझे लगता है कि आपने अपनी टिप्पणी से सिर पर कील ठोक दी है।

यह सच नहीं है कि किसी भी कार्यात्मक भाषा के मानचित्रों को समानांतर किया जा सकता है - भाषा शुद्ध होनी चाहिए । (मेरा मानना ​​है कि हास्केल केवल मुख्यतः विशुद्ध रूप से कार्यात्मक भाषा है। लिस्प, ओकेमेल और स्काला एक गैर-शुद्ध हैं।)

हम समय से पहले शुद्ध कोड के लाभों के बारे में जानते हैं, जब इंजीनियरों ने पहले अपने प्रोसेसर को पाइपलाइज़ किया था। तो कैसे कोई भी एक शुद्ध भाषा का उपयोग नहीं करता है?

यह वास्तव में है, वास्तव में, वास्तव में कठिन है। शुद्ध भाषा में प्रोग्रामिंग करना अक्सर ऐसा महसूस करता है कि दोनों हाथ आपकी पीठ के पीछे बंधे हैं।

एमआर जो करता है वह कुछ हद तक शुद्धता की कमी को शांत करता है, और अन्य टुकड़ों (जैसे फेरबदल चरण) के लिए एक ढांचा प्रदान करता है, जिससे समस्याओं के बड़े हिस्से के लिए वितरण योग्य कोड लिखना काफी आसान हो जाता है।

NC=P


मैं MapReduce से परिचित नहीं हूं, लेकिन आपकी प्रस्तुति इससे अलग नहीं लगती है जो मुझे याद है कि पिछली सदी में समानांतर 101 में आदर्श मामले के रूप में प्रस्तुत किया जा रहा है।
गाइल्स

@ गिल्स: मेरा इरादा सिर्फ यह दिखाना था कि "विभाजित और जीतना"! = " वितरण योग्य विभाजन और जीत।" एम / आर कम तुच्छ है, हालांकि यकीनन अभी भी गैर-मूल है।
Xodarap

कार्यात्मक प्रोग्रामिंग में, सभी मानचित्रों को समानांतर (शर्मनाक तरीके से) किया जा सकता है, इसलिए उस प्रतिमान से क्यों न चिपके रहें? मैं नहीं देखता कि countआपके छद्म कोड में एक साझा चर कैसे है; बस do_somethingकाम करने के लिए अपने वर्तमान मूल्य को पारित करना चाहिए। क्या आप एक "वास्तविक" डी एंड सी एल्गोरिथ्म (मर्जेसर्ट, क्विकॉर्ट, ...) का एक उदाहरण दे सकते हैं जिसके लिए पुनरावर्ती कॉल एक दूसरे पर निर्भर करते हैं (कॉल जारी होने के बाद)?
राफेल

@ राफेल: मैंने आपकी टिप्पणी का बेहतर जवाब देने के लिए अपना जवाब फिर से लिखा है। मैं एक उदाहरण जोड़ सकता हूं कि शुद्धता कब कष्टप्रद है, अगर आप अभी भी चाहते हैं।
Xodarap

1
@ राफेल: मैं मानता हूं कि मेरा उत्तर बहुत बेहतर होगा यदि मैं कुछ कागज दिखा सकता हूं कि प्रोग्रामिंग समय एम / आर का उपयोग करके एक्स घंटे से लेकर वाई तक गिर जाता है, या शुद्धता को लागू करके ए से बी तक बढ़ जाता है, लेकिन मुझे लगता है कि मैं कर सकता हूं क्या मेरे हाथ गुस्से में हैं और जोर देते हैं कि मतभेद गैर-तुच्छ हैं।
Xodarap
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.