मैं यहाँ हैडूप के लिए नया हूँ। यह स्पष्ट नहीं है कि हडूप मैप्रेडस का उपयोग करते समय हमें चाबियाँ कैसे क्रमबद्ध करने में सक्षम होना चाहिए? नक्शा चरण के बाद, हमें कुछ अनूठी कुंजी से संबंधित डेटा को कुछ reducers के लिए वितरित करने की आवश्यकता है। इसे सही तरीके से सॉर्ट करने की ज़रूरत के बिना किया जा सकता है?MapReduce चरण में सॉर्ट किया गया है और क्यों?
उत्तर
यह वहां है, क्योंकि सॉर्टिंग आपकी चाबियों को समूहबद्ध करने के लिए एक साफ चाल है। बेशक, अगर आपकी नौकरी या एल्गोरिदम को आपकी चाबियों के किसी भी क्रम की आवश्यकता नहीं है, तो आप कुछ हैशिंग चाल से समूह के लिए तेज़ी से होंगे।
हडोप में ही, वर्षों से पहले से ही एक जेआईआरए दायर किया गया है (source)। हडोप के शीर्ष पर परत के कई अन्य वितरण पहले से ही इन सुविधाओं में हैं, उदाहरण के लिए हनबोरक (वे इसे टालने से बचते हैं)। (source)
अपने वास्तविक सवाल करने के लिए(क्यों), MapReduce स्वाभाविक गूगल (source) से एक कागज जो निम्नलिखित राज्यों था:
हम यह गारंटी है कि किसी भी विभाजन के भीतर, मध्यवर्ती कुंजी/मान जोड़ों को प्रमुख क्रम में बढ़ाने में संसाधित किया जाता है। यह आदेश देने की गारंटी आसान विभाजन प्रति एक हल कर आउटपुट फ़ाइल, जो उपयोगी होता है जब आउटपुट फ़ाइल स्वरूप कुंजी द्वारा कुशल यादृच्छिक पहुँच लुकअप समर्थन करने के लिए की जरूरत है, या उत्पादन की उपयोगकर्ताओं के लिए यह सुविधाजनक करने के लिए है लगता है उत्पन्न करने के लिए बनाता है डेटा क्रमबद्ध।
तो यह सॉर्ट का समर्थन करने के लिए एक अधिक सुविधाजनक निर्णय था, लेकिन स्वाभाविक रूप से केवल समूह कुंजी को सॉर्ट करने की अनुमति नहीं देता था।
"कुंजी द्वारा क्रमबद्ध" सबसे अच्छी तरह से समझा जाता है यदि हम इस तथ्य पर विचार करते हैं कि अलग-अलग मशीनों पर अलग-अलग कुंजी भेजकर आपके लिए हैडऑप डिस्ट्रिब्यूट्स प्रक्रिया करता है।
The reducer which a (k,v) pair is sent to = k.hashCode()%num_of_machines.
तो, अगर मेरी कुंजी के hashCode 10 है, और मैं 2 मशीन है, कुंजी मशीन # 0, उदाहरण के लिए भेजा जाएगा: बुनियादी (सरलीकृत) विचार के संस्करण इस है।
इस प्रकार, कुंजी (पहले) हमें गणना वितरित करने का एक आसान तरीका प्रदान करती है।
गणना के वितरण को सरल बनाने के अलावा, कुंजी हमें अलग-अलग डेटा फ़ाइलों के रिकॉर्ड को एकल क्लस्टर में शामिल करने का एक तरीका देती है। उदाहरण के लिए, हम word_count जैसी चीजें कैसे कर सकते हैं।
वास्तव में, यदि आपको लगता है कि आपको चाबियाँ की आवश्यकता नहीं है --- तो आपको शायद हडूप की आवश्यकता नहीं है!
क्लासिक उदाहरण (शब्द गणना):
Hadoop "शब्द गणना" उदाहरण में, हम मानों वाली कुंजियों (एक कुंजी = एक शब्द) (# बार उस शब्द का एक खंड में देखा गया था फेंकना पाठ)। यह एक सिंगल को एक सिंगल शब्द प्राप्त करने के लिए फ़ंक्शन को कम करने की अनुमति देता है, और इस प्रकार एक सटीक शब्द गणना बनाने के लिए इसे देखा गया हर बार जोड़ता है।
इस प्रकार, चाबियों का एकत्रीकरण "मैप" चरण को कई मशीनों में स्वतंत्र रूप से वितरित करने की अनुमति देता है।एक ही reducer के लिए कुंजी को एकत्रित किए बिना, शब्द गणना उदाहरण में, हमें किसी दिए गए शब्द के लिए कई शब्द गणना मिल सकती हैं, क्योंकि कोई गारंटी नहीं है कि एक भी reducer सभी फ़ाइलों से सभी शब्द गणना प्राप्त होगा।
एक और उदाहरण:
अब ... की सुविधा देता है कहते हैं कि हम आईडी के रूप में सामाजिक सुरक्षा नंबर है और हम उत्पादन के लिए व्यक्तिगत डेटा के एकीकरण का चाहते हैं। आइए कहें कि हमारे पास 2 विशाल फाइलें हैं।
ssn-> नाम
ssn-> shoe_size
इस मामले में, हम प्रमुख समूह की शक्ति है, ऐसा है कि एक व्यक्तियों नाम और जूते का आकार दोनों एक ही कम कर कार्य करने के लिए भेजा जाता है का लाभ उठाने कर सकते हैं।
कम करने (2) 2 रिकॉर्ड यहां प्राप्त होगा:
ssn-> नाम, shoe_size
विचार यहाँ यह है कि जब नक्शा लेखन/नौकरियों को कम करने, आप अपने "tuples" सांकेतिक शब्दों में बदलना करने के लिए है कि इस तरह से आउटपुट किया जाता है कि वे कम चरण में, सार्थक तरीके से एक साथ जुड़ सकते हैं। किसी भी वितरित कंप्यूटिंग वातावरण की संभावना किसी बिंदु पर, विभिन्न नोड्स में गणना किए गए रिकॉर्ड को गठबंधन करने की आवश्यकता होगी। कुंजी हमें ऐसा करने के लिए एक सुविधाजनक और स्केलेबल पद्धति प्रदान करते हैं।
तो - तथ्य यह है कि हम इस बात की सराहना करते हैं कि समान कुंजी समान रेड्यूसर फ़ंक्शन पर जाती है, यह पुष्टि करती है कि इस विशेष सामाजिक सेक्यूरिरी नंबर के लिए प्रत्येक रेड्यूसर उस नंबर से जुड़े सभी डेटा प्राप्त करेगा, जिससे हमें डेटा रिकॉर्ड में शामिल होने और आउटपुट करने की अनुमति मिल जाएगी। जिसमें एसएसएन, नाम, और जूते का आकार शामिल है।
निष्कर्ष
इस तरह से, कुंजी द्वारा वितरण डेटा दर्दनाक जटिल मध्यस्थ डेटा भंडारण/कैशिंग किसी तरह से जुड़े तर्क की आवश्यकता होगी में शामिल होने के बिना। हडोप बस एक परिचित प्रतिमान: कुंजी और मूल्यों का उपयोग करके समानांतर गणनाओं से डेटा परिणामों में "शामिल" होने की सामान्य आवश्यकता को सामान्यीकृत और सारणीकृत करता है।
- 1. MapReduce सॉर्ट एल्गोरिदम कैसे काम करता है?
- 2. क्यों स्कैला का ट्रीसेट रिटर्न सॉर्ट किया गया
- 3. MySQL auto_increment चरण आकार कैसे निर्धारित किया गया है
- 4. सॉर्ट किया गया लेकिन घुमावदार सरणी
- 5. MSYS में इतना धीमा क्यों कॉन्फ़िगर किया गया है?
- 6. सॉर्ट किया गया एरियाउसेलिंग चयनकर्ता क्या कर रहा है?
- 7. .Net शब्दकोश ऐसा क्यों दिखता है जैसा सॉर्ट किया गया है?
- 8. अपवाद क्यों ट्रिगर नहीं किया गया है?
- 9. क्यों जुनीट मेथडरूल और टेस्टवैचमैन को बहिष्कृत किया गया है?
- 10. ऑब्जेक्ट में बराबर और हैशकोड परिभाषित क्यों किया गया था?
- 11. knockoutjs ObservableArrays और सॉर्ट फ़ंक्शन: यूआई अपडेट नहीं किया गया है
- 12. MapReduce
- 13. MapReduce
- 14. स्प्रिंगबैच में MapReduce/कुल संचालन
- 15. कप्तान चरण के लिए पंजीकृत घटना श्रोताओं को बुलबुले से पहले ट्रिगर नहीं किया गया - क्यों?
- 16. Hadoop mapreduce है त्रुटि
- 17. MapReduce
- 18. विंडोज एपीआई में सबकुछ टाइप क्यों किया गया है?
- 19. इस मामले में कनेक्टटाइमआउट को अनदेखा क्यों किया गया है?
- 20. एक्सेलेरोमीटर क्यों है: किया गया त्वरित: आईओएस 5 में बहिष्कृत?
- 21. सॉर्ट किए गए सूची और सूची उपयोग सरणी क्यों करें और लिंक्डलिस्ट का उपयोग क्यों नहीं किया जाता है?
- 22. थ्रेड कमांड के चरण और चरण में चरण के लिए क्या उपयोग है?
- 23. लोचदार MapReduce
- 24. ज़ीपविथ इंडेक्स इटरबल में क्यों लागू किया गया है और ट्रैवर्सबल नहीं है?
- 25. MapReduce मेरे लिए सही है?
- 26. std :: strstream बहिष्कृत क्यों किया गया था?
- 27. डीबगर चरण को अनदेखा किया जा रहा है
- 28. हडोप में त्रुटि MapReduce
- 29. एनएससीओनक्टाडेटा क्या है, और इसे कहां परिभाषित किया गया है?
- 30. क्या पाइथन सॉर्ट किया गया है() फ़ंक्शन स्थिर होने की गारंटी है?
स्रोतों के संपादन के लिए धन्यवाद मैट। –
धन्यवाद थॉमस! इससे स्पष्ट हुआ! – user428900
मेरे विचार में, हैडॉप डिस्क में बिखरे हुए मानचित्र आउटपुट पर प्रारंभिक सॉर्टिंग शुरू करता है (रिकॉर्डिंग को रिक्त करने के लिए सॉर्टिंग केवल होता है) बाद में यह सॉर्ट (अपेक्षाकृत कम लागत) को मर्ज करता है, और शुरुआत से ही चाबियाँ क्रमबद्ध होती हैं संयोजन करने के लिए संयोजक और सॉर्ट किए गए चाबियाँ भी reducer का आह्वान करते समय मदद करता है इसलिए सॉर्टिंग एक अच्छा विचार है। – Kalai