2012-10-02 26 views
5

एक नक्शा बनाने की कोशिश कर रहा हूं।मैं हाडोप मानचित्र को कैसे डिबग कर सकता हूं

यह पूरा होने के लिए चलता है लेकिन अंत में अजीब डेटा पेश करता है।

जब मैं system.out.println ("डीबग डेटा") का उपयोग करके इसे डीबग करने का प्रयास करता हूं यह स्क्रीन पर प्रदर्शित नहीं होता है।

जावा एपीआई का उपयोग कर एक बाहरी लॉग फ़ाइल का उत्पादन करने, log4j लकड़हारा विधि log.info का उपयोग कर (लॉग डेटा) अभ्यस्त काम log.severe का उपयोग कर स्क्रीन पर मुद्रित करने के लिए ("लॉग डेटा") की कोशिश कर रहा है या तो/

कुछ भी काम करता है जब मैं देखता हूं कि मेरे डीबग संदेश तब होते हैं जब मानचित्र में अपवाद होता है तो नौकरी कम हो जाती है।

कैसे यह तो मैं या तो एक फ़ाइल पर या स्क्रीन पर मेरी डिबग संदेश देख सकते हैं निर्धारित किया जा सकता है?

+2

println का उपयोग डिबगिंग नहीं है। वह ट्रेसिंग है। – maba

+1

हो सकता है कि आपके पास लॉगिंग पर्याप्त न हो (http://stackoverflow.com/questions/4821134/hadoop-enable-logging)? यहां तक ​​कि System.out.println() को रीडायरेक्ट किया जा सकता है –

उत्तर

3

This answer मदद मिल सकती है। हैडोप अपने स्वयं के नौकरी ट्रैकिंग लॉगिंग सिस्टम के लिए System.out कैप्चर करता है।

+0

thx जो पर्याप्त उम्मीद है कि बीमार समस्या का पता लगाने में बीमार है –

0

मैं अपने नक्शे का विकास/Maven का उपयोग कर क्रम जार निर्माण करने के लिए और निर्भरता का प्रबंधन करने के ग्रहण में कोड को कम। एक बार जब मैंने एचडीएफएस का समर्थन करने के लिए अपनी मशीन पर स्थापित किया है और चल रहा है, तो मैं ग्रहण में अपना कोड चला सकता हूं और डीबग कर सकता हूं। इसका अर्थ है ग्रहण डीबग परिप्रेक्ष्य में ब्रेकपॉइंट्स और बाकी सब कुछ का उपयोग करना।

1

आप बड़ा डेटा कार्रवाई कर रहे हैं के बाद से, अपने अनुरेखण संदेशों के आकार, विशाल हो सकता है तो यह एक समस्या हो सकती है। यह विकल्पों पर विचार करना उपयोगी होता है करने के लिए "System.out.println" शैली प्रवेश:

  • उपयोग काउंटर (here एक सरल उदाहरण है)
  • HDFS को लिखने लॉग MultipleOutputs

के बारे में सबसे अच्छी बात का उपयोग कर काउंटर और एकाधिक आउटपुट - आप एकाधिक आउटपुट के मामले में प्रोग्राम तक पहुंच सकते हैं, आप लॉग से कुछ आंकड़े निकालने के लिए मानचित्र को भी चला सकते हैं/कार्य को कम कर सकते हैं।

एक अन्य विकल्प उत्पादन वातावरण पर डिबगिंग के लिए, इकाई परीक्षण है MiniMRCluster आप परीक्षण करने के लिए अपने इकाई परीक्षण के दौरान नौकरियों नक्शे-कम करने में मदद मिलेगी।

3

आप अपने गाइड से Jumbune

की कोशिश कर सकते:

डीबगर MapReduce नौकरी निष्पादन के कोड के स्तर का नियंत्रण प्रवाह आँकड़े उपलब्ध कराता है। उपयोगकर्ता regex सत्यापन या उपयोगकर्ता परिभाषित सत्यापन कक्षाओं को लागू कर सकता है। लागू सत्यापन के अनुसार, फ्लो डीबगर इनपुट डेटा tuples के प्रवाह की जांच करता है सबमिट की गई नौकरी में प्रत्येक मैपर और reducer के लिए अनिवार्य रूप से डेटा जोड़ता है।

Jumbune एक व्यापक तालिका/चार्ट देखने के काम के माध्यम से इनपुट रिकॉर्ड के प्रवाह का चित्रण करती है। प्रवाह नौकरी के स्तर, MapReduce स्तर, और उदाहरण स्तर पर प्रदर्शित किया गया है। बेजोड़ कुंजी/मान नौकरी के माध्यम से कुंजी/मूल्य डेटा के अप्रत्याशित प्रवाह की संख्या का प्रतिनिधित्व करते हैं। के लिए डेटा के प्रवाह की जांच करने के लिए कोड में डीबगर ड्रिल करता है जैसे लूप और यदि-स्थितियां, अन्य-जैसे इत्यादि

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