2012-05-17 19 views
23

मैं बस 0 reducer और पहचान reducer के बीच अंतर की मेरी समझ की पुष्टि करने की कोशिश कर रहा हूँ।हडूप: 0 रेड्यूसर और पहचान reducer के बीच अंतर?

  • 0 कम करने का मतलब है कम कर कदम छोड़ दिया जाएगा और नक्शाकार उत्पादन अंतिम बाहर
  • पहचान कम करने तो छँटाई अभी भी आयोजित होगा फेरबदल/इसका मतलब होगा?

उत्तर

34

आप समझना सही है। मैं इसे निम्नलिखित के रूप में परिभाषित करता हूं: यदि आपको मानचित्र परिणामों को क्रमबद्ध करने की आवश्यकता नहीं है - तो आप 0 को कम करते हैं, और नौकरी को केवल मानचित्र कहा जाता है।
यदि आपको मानचित्रण परिणामों को सॉर्ट करने की आवश्यकता है, लेकिन किसी भी समेकन की आवश्यकता नहीं है - तो आप पहचान reducer चुनते हैं।
और तस्वीर को पूरा करने के लिए हमारे पास तीसरा मामला है: हमें एकत्रीकरण की आवश्यकता है और, इस मामले में हमें reducer की आवश्यकता है।

3

यह आपकी व्यावसायिक आवश्यकताओं पर निर्भर करता है। यदि आप वर्डकाउंट कर रहे हैं तो आपको कुल परिणाम प्राप्त करने के लिए अपने मानचित्र आउटपुट को कम करना चाहिए। यदि आप शब्दों को ऊपरी मामले में बदलना चाहते हैं, तो आपको कम करने की आवश्यकता नहीं है।

4

पहचान रेड्यूसर का उपयोग करने के लिए एक अन्य उपयोग-केस सभी परिणामों को < # reducers> आउटपुट फ़ाइलों में जोड़ना है। यह आसान हो सकता है यदि आप सीधे एस 3 को लिखने के लिए अमेज़ॅन वेब सेवाओं का उपयोग कर रहे हैं, खासकर यदि मैपर आउटपुट छोटा है (उदा। रिकॉर्ड के लिए एक grep/search), और आपके पास बहुत सारे मैपर (उदा। 1000) हैं।

+0

हाय डोलन, क्या आप कम से कम फ़ाइलों में परिणामों को गठबंधन करने के लिए पहचान Reducer का उपयोग करने के बारे में थोड़ा विस्तार कर सकते हैं? मुझे इसी तरह की समस्याओं का सामना करना पड़ रहा था - मानचित्र-केवल नौकरियों द्वारा उत्पन्न बहुत सी छोटी फाइलें। क्या यह केवल नक्शा-नौकरियों की तुलना में कम कुशल होगा? –

+0

यितोंग - पहचान रेड्यूसर का उपयोग करते समय अतिरिक्त ओवरहेड है क्योंकि मैपर आउटपुट को एक्स बाल्टी में धोना पड़ता है और फिर एक्स रेड्यूसर (यानी जहां एक्स आउटपुट फाइलों की आपकी वांछित संख्या होती है) को भेजा जाता है, क्रमबद्ध, और फिर एचडीएफएस/एस 3/आदि पर आउटपुट निर्देशिका में सहेजा गया। यदि आपके पास डेटा का एक टन है, तो आपको इस अतिरिक्त ओवरहेड से सावधान रहना होगा क्योंकि यह कुछ मामलों में महत्वपूर्ण हो सकता है। वैकल्पिक रूप से, यदि एचडीएफएस को सहेजते हैं, तो आप सभी फ़ाइलों के आउटपुट को एक स्थान पर स्ट्रीम करने के लिए 'hdfs cat' का उपयोग कर सकते हैं। मुझे नहीं पता कि एस 3 में एक समान स्ट्रीम-रीडिंग तंत्र है या नहीं। –

3

के बीच "नहीं प्रसारण" मुख्य अंतर यह है (mapred.reduce.tasks = 0) और "मानक कम करने" जो IdentityReducer है (mapred.reduce.tasks = 1 आदि) जब आप का उपयोग है, "नहीं कम करने "एमएपी चरण के बाद & प्रक्रियाओं को शफल करने के लिए कोई विभाजन नहीं है। इसलिए, इस मामले में आपको बिना किसी प्रसंस्करण के अपने मैपर्स से 'शुद्ध' आउटपुट मिलेगा। यह विद्यार्थियों के विकास और डिबगिंग के लिए मदद करता है, लेकिन न केवल।

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