Hadoop में कार्य कब शुरू होते हैं?


82

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

जवाबों:


206

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

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

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

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

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

आमतौर पर, मैं mapred.reduce.slowstart.completed.mapsऊपर रखना पसंद करता हूं 0.9अगर सिस्टम में कभी एक साथ कई काम चल रहे हों। जब वे कुछ भी नहीं कर रहे हैं, लेकिन डेटा की नकल कर रहे हैं तो इस तरह से नौकरी को कम नहीं किया जा सकता है। यदि आपके पास केवल एक समय में एक काम चल रहा है, तो 0.1करना शायद उचित होगा।


3
क्या आप जानते हैं कि आपने जो उल्लेख किया है, उसके बारे में मैं और अधिक कैसे पढ़ सकता हूं?
दिवास्वप्न

1
मेरी राय में स्लोस्टार्ट काफी खराब प्रलेखित है .... जैसा कि अधिकांश अस्पष्ट कॉन्फ़िगरेशन पैरामीटर हैं।
डोनाल्ड माइनर

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

@ डोनाल्ड I, वर्ज़न 0.20.205.0 के हडूप का उपयोग कर रहा है और मापक-साइट.एक्सएमएल से 0.1 में पैरामीटर "mapred.reduce.slowstart.completed.maps" सेट करता है, लेकिन रिड्यूसर अभी भी मैपर पूरा होने के बाद चलता है। क्या मैं जान सकता हूं क्यों ?
हैरी पॉटर

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

5

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


1

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


0

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


0

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


-1

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

मान लें कि विभिन्न मैपर्स से हमारा मैप आउटपुट निम्न रूप में है:

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

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

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


ओपीएन के सवाल को संबोधित नहीं करता है कि कब शुरू होता है।
साई किरती बादाम

-1

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

लेकिन इसके बाद डेटा ट्रांसफर होता है each मैप के । दरअसल यह एक पुल ऑपरेशन है।

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

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


-2

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

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