2012-07-26 16 views
70

हडोप में जब कार्य कम करते हैं तो शुरू होता है? क्या वे मैपर के एक निश्चित प्रतिशत (थ्रेसहोल्ड) के बाद शुरू करते हैं? यदि हां, तो क्या यह सीमा तय है? आम तौर पर किस प्रकार की दहलीज का उपयोग किया जाता है?जब हडोप में कार्य कम हो जाते हैं?

उत्तर

181

कम चरण में 3 कदम हैं: शफल, क्रमबद्ध करें, कम करें। शफल वह जगह है जहां डेटा प्रत्येक मैपर से रेड्यूसर द्वारा एकत्र किया जाता है। ऐसा तब हो सकता है जब मैपर डेटा उत्पन्न कर रहे हों क्योंकि यह केवल डेटा हस्तांतरण है। दूसरी ओर, सॉर्ट करें और कम करें केवल सभी मैपर किए जाने के बाद ही शुरू हो सकते हैं। आप बता सकते हैं कि रेड्यूसर पूर्णता प्रतिशत को देखकर कौन सा मैपराइडस कर रहा है: 0-33% का मतलब है कि यह शफल कर रहा है, 34-66% क्रमबद्ध है, 67% -100% कम है। यही कारण है कि आपके reducers कभी-कभी 33% पर "अटक" लगते हैं - यह मैपर्स खत्म होने की प्रतीक्षा कर रहा है।

Reducers समाप्त होने वाले मैपर के प्रतिशत की सीमा के आधार पर शफल शुरू करते हैं। आप जल्दी या बाद में शुरू करने के लिए reducers प्राप्त करने के लिए पैरामीटर बदल सकते हैं।

रेड्यूकर्स की शुरुआत अच्छी बात क्यों शुरू हो रही है? चूंकि यह मैपर्स से डेटा ट्रांसफर को समय के साथ रेड्यूसर तक फैलता है, जो आपके नेटवर्क की बाधा है, तो यह एक अच्छी बात है।

रेड्यूसर को बुरी चीज शुरू करना क्यों शुरू हो रहा है? क्योंकि वे डेटा को कॉपी करते समय और मैपर्स को समाप्त करने की प्रतीक्षा करते समय स्लॉट को कम करते हैं। एक और नौकरी जो बाद में शुरू होती है जो वास्तव में कम स्लॉट का उपयोग करेगी, अब उनका उपयोग नहीं कर सकती है।

mapred-site.xml में mapred.reduce.slowstart.completed.maps के डिफ़ॉल्ट मान को बदलकर रेड्यूसर स्टार्टअप को अनुकूलित कर सकते हैं। 1.00 का मान रेड्यूसर शुरू करने से पहले सभी मैपर खत्म होने की प्रतीक्षा करेगा। 0.0 का मान तुरंत reducers शुरू करेगा। 0.5 का मान रेड्यूसर शुरू करेगा जब मैपर का आधा पूरा हो जाएगा। आप नौकरी-दर-नौकरी के आधार पर mapred.reduce.slowstart.completed.maps भी बदल सकते हैं। हडोप के नए संस्करणों में (कम से कम 2.4.1) पैरामीटर को mapreduce.job.reduce.slowstart.completedmaps (धन्यवाद उपयोगकर्ता yegor256) कहा जाता है।

आमतौर पर, से ऊपररखना है यदि सिस्टम में कभी-कभी कई नौकरियां चल रही हैं। इस तरह जब नौकरी कुछ भी नहीं कर रही है लेकिन डेटा कॉपी कर रही है तो नौकरी reducers hog नहीं है। यदि आपके पास एक समय में केवल एक नौकरी चल रही है, तो 0.1 कर शायद उचित होगा।

+3

क्या आप जानते हैं कि आपने जो उल्लेख किया है उसके बारे में मैं और कहां पढ़ सकता हूं? – daydreamer

+1

स्लोवस्टार्ट मेरी राय में काफी खराब दस्तावेज है .... जैसा कि अधिकांश अस्पष्ट विन्यास पैरामीटर हैं। –

+5

अच्छा जवाब @ डोनाल्ड खान। बस इसे नए हैडोप संस्करण में जोड़ना चाहते हैं (मैं 1.1.2 का उपयोग कर रहा हूं), मान 0.05 पर डिफॉल्ट किया गया है। http://hadoop.apache.org/docs/r1.1.2/mapred-default.html – sufinawaz

1

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

0

कम चरण के लिए दिखाया गया प्रतिशत वास्तव में नक्शे आउटपुट से प्रतिलिपि किए गए डेटा की मात्रा के बारे में reducers इनपुट निर्देशिकाओं के बारे में है। यह जानने के लिए कि यह प्रतिलिपि कब शुरू होती है? यह एक कॉन्फ़िगरेशन है जिसे आप ऊपर दिखाए गए डोनाल्ड के रूप में सेट कर सकते हैं। एक बार जब सभी डेटा reducers (यानी 100% कम) के लिए प्रतिलिपि बनाई जाती है, तब जब reducers काम करना शुरू कर देते हैं और इसलिए यदि आपका reducers कोड I/O या CPU गहन है तो "100% कम" में जमा हो सकता है।

3

कम करने वाला चरण एक रेड्यूसर कहने से पहले शुरू हो सकता है। जैसे ही "ए" मैपर नौकरी खत्म कर देता है, जेनरेट किया गया डेटा कुछ सॉर्टिंग और शफलिंग से गुजरता है (जिसमें संयोजक और विभाजनकर्ता को कॉल शामिल है)। इस समय में reducer "चरण" kicks पोस्ट मैपर डेटा प्रोसेसिंग शुरू हो गया है। चूंकि ये प्रसंस्करण किया जाता है, आप Reducers प्रतिशत में प्रगति देखेंगे। हालांकि, अभी तक कोई भी reducers बुलाया नहीं गया है। उपलब्ध/उपयोग किए जाने वाले प्रोसेसर की संख्या, डेटा की प्रकृति और अपेक्षित reducers की संख्या के आधार पर, आप उपरोक्त @ डोनाल्ड-खनिक द्वारा वर्णित पैरामीटर को बदलना चाह सकते हैं।

0

बेहतर कैसे मानचित्र को कम काम works.Suppose हम एक बड़ी फ़ाइल है समझने के लिए एक शब्दसंख्या उदाहरण पर विचार करें, एक उपन्यास का कहना है और हमारे कार्य समय की संख्या प्रत्येक शब्द फ़ाइल में होता है मिल रहा है। चूंकि फ़ाइल बड़ी है, इसलिए इसे विभिन्न ब्लॉक में विभाजित किया जा सकता है और विभिन्न कार्यकर्ता नोड्स में दोहराया जा सकता है। शब्द गिनती नौकरी नक्शा से बना है और कार्यों को कम करता है। नक्शा कार्य प्रत्येक ब्लॉक इनपुट के रूप में लेता है और एक मध्यवर्ती कुंजी-मूल्य जोड़ी उत्पन्न करता है। इस उदाहरण में, चूंकि हम शब्दों के अवसरों की संख्या की गणना कर रहे हैं, इसलिए ब्लॉक को संसाधित करते समय मैपर का परिणाम फॉर्म (शब्द 1, गिनती 1), (शब्द 2, गिनती) आदि के मध्यवर्ती परिणाम होगा। सभी मैपर्स के मध्यवर्ती परिणाम एक शफल चरण से गुजरता है जो मध्यवर्ती परिणाम को पुन: व्यवस्थित करेगा।

मान लें कि विभिन्न मानचित्रकारों से हमारे नक्शे उत्पादन निम्न रूप में है:

मानचित्र 1: - (है, 24) (था, 32) (और, 12)

MAP2: - (मेरे, 12) (है, 23) (था, 30)

नक्शा आउटपुट इस तरह है कि एक ही कुंजी मान ही कम करने के लिए दिया जाता में हल कर रहे हैं। यहां इसका मतलब यह होगा कि संबंधित कुंजी, आदि एक ही reducer जाना था। यह reducer है जो अंतिम आउटपुट पैदा करता है, जो इस मामले में होगा: - (और, 12) (है, 47) (मेरा, 12) (था, 62)

0

रेड्यूसर कार्य केवल सभी मैपर्स के completion के बाद शुरू होता है।

लेकिन आंकड़ा अंतरण each मानचित्र बाद क्या होता है। दरअसल यह एक पुल ऑपरेशन है।

इसका मतलब है कि, प्रत्येक बार reducer प्रत्येक maptask से पूछेगा यदि उनके पास मानचित्र से पुनः प्राप्त करने के लिए कुछ डेटा है। अगर उन्हें कोई नक्शा मिलाकर अपना कार्य पूरा कर लेता है, तो Reducer मध्यवर्ती डेटा खींचता है।

मैपर से मध्यवर्ती डेटा disk में संग्रहीत किया जाता है। और मैपर से डेटा अंतरण कम करने के लिए नेटवर्क के माध्यम से होता है (Data Locality में संरक्षित नहीं है चरण में कमी)

0

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

1

जब मैपर अपना कार्य पूरा करता है तो Reducer डेटा को कम करने के लिए अपना काम शुरू करता है यह मैप्रिडस जॉब है।

संबंधित मुद्दे