2011-12-22 13 views
7

मैं यह पता लगाने की कोशिश कर रहा हूं कि मानचित्र कार्य का आउटपुट डिस्क पर सहेजा गया है इससे पहले कि इसे कम करें।हडोप में ढांचा मानचित्र मानचित्र के आउटपुट को सामान्य मानचित्र-कम करने वाले एप्लिकेशन में सहेजता है?

नोट: - इस्तेमाल किया संस्करण नई एपीआई

उदाहरण के लिए साथ Hadoop 0.20.204 है, जब मानचित्र कक्षा में नक्शा विधि को अधिलेखित:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 
    String line = value.toString(); 
    StringTokenizer tokenizer = new StringTokenizer(line); 
    while (tokenizer.hasMoreTokens()) { 
     word.set(tokenizer.nextToken()); 
     context.write(word, one); 
    } 

    // code that starts a new Job. 

} 

मैं पता लगाने के लिए दिलचस्पी है context.write() कहां डेटा लिखता है।

FileOutputFormat.getWorkOutputPath(context); 

कौन सा मुझे HDFS पर निम्न स्थान देता है:: अब तक मैं में भाग लिया है

hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0 

जब मैं दूसरी नौकरी यह मुझे निम्न त्रुटि देता है के लिए इनपुट के रूप में उपयोग करने का प्रयास करें:

org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0 

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

कोई विचार जहां अस्थायी आउटपुट लिखा गया है? या हो सकता है कि वह स्थान क्या है जहां मुझे एक नौकरी के दौरान एक मानचित्र कार्य का आउटपुट मिल सकता है जिसमें मानचित्र और कमी दोनों चरण हैं?

+0

बीटीडब्ल्यू, फ़ाइलऑटपथफॉर्मैट # getWorkOutputPath जैसा दिखता है नौकरी के लिए अस्थायी आउटपुट फ़ोल्डर का स्थान देता है और एपीआई दस्तावेज के अनुसार मानचित्र कार्य के लिए नहीं देता है। 'जब मैं इसे किसी अन्य नौकरी के लिए इनपुट के रूप में उपयोग करने का प्रयास करता हूं तो यह मुझे निम्न त्रुटि देता है:' - नौकरी पूरी होने के बाद आमतौर पर अस्थायी फ़ाइलें हटा दी जाती हैं या अन्यथा नोड आसानी से मिल जाएगा। –

+0

ठीक है, उचित बिंदु, लेकिन मैं नौकरी शुरू कर रहा हूं जबकि अन्य नौकरी निष्पादित हो रही है। मैं घोंसला नक्शा कम कर रहा हूँ। तो, बाहरी नौकरी व्यस्त है जबकि आंतरिक नौकरी निष्पादित हो रही है, इसलिए अस्थायी फ़ाइलों को हटाने में कोई कमी नहीं होनी चाहिए। – inquire

+0

लेकिन ठीक है, पर्याप्त चीजें हटा दी जाती हैं, जिसका अर्थ है कि वे हटाए जाने से पहले कहीं कहीं थे। मुझे यह पता लगाने की जरूरत है कि वह कहां है। : डी – inquire

उत्तर

3

तो, मैंने यह पता लगाया है कि वास्तव में क्या चल रहा है।

मैपर का आउटपुट तब तक बफर किया जाता है जब तक कि इसका आकार 80% तक न हो जाए, और उस बिंदु पर यह परिणाम को स्थानीय डिस्क पर डंप करना शुरू कर देता है और बफर में आइटम स्वीकार करना जारी रखता है।

मैं मैपर का इंटरमीडिएट आउटपुट प्राप्त करना चाहता था और इसे अन्य नौकरी के लिए इनपुट के रूप में उपयोग करना चाहता था, जबकि मैपर अभी भी चल रहा था। यह पता चला है कि हडूप 0.20.204 परिनियोजन को भारी रूप से संशोधित किए बिना यह संभव नहीं है।

map .... { 
    setup(context) 
    . 
    . 
    cleanup(context) 
} 

और सफाई कहा जाता है, वहाँ अभी भी कोई अस्थायी फ़ोल्डर के लिए डंपिंग: जिस तरह से काम करता है प्रणाली सभी चीजें हैं जो नक्शा संदर्भ में निर्दिष्ट कर रहे हैं के बाद भी है।

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

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

FileOutputFormat.getWorkOutputPath(context) 

मैं उस तरीके से प्रबंधित हुआ जो मैं अलग-अलग तरीके से करना चाहता था। वैसे भी इस बारे में कोई प्रश्न हो सकता है, मुझे बताएं।

2

कार्य ट्रैकर प्रत्येक मानचित्र या कम कार्य के लिए एक अलग जेवीएम प्रक्रिया शुरू करता है।

मैपर आउटपुट (इंटरमीडिएट डेटा) प्रत्येक मैपर गुलाम नोड के स्थानीय फ़ाइल सिस्टम (नहीं एचडीएफएस) को लिखा जाता है। एक बार डेटा Reducer में स्थानांतरित हो जाने के बाद, हम इन अस्थायी फ़ाइलों तक पहुंचने में सक्षम नहीं होंगे।

यदि आप अपने मैपर आउटपुट को देखना चाहते हैं, तो मैं IdentityReducer का उपयोग करने का सुझाव देता हूं?

4

नक्शा कम करने के लिए फ्रेमवर्क इंटरमीडिएट आउटपुट को एचडीएफएस की बजाय स्थानीय डिस्क में स्टोर करेगा क्योंकि इससे फाइलों की अनावश्यक रूप से प्रतिकृति हो जाएगी।

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