2012-08-15 13 views
6

मेरे पास एक ईएमआर स्ट्रीमिंग जॉब (पायथन) है जो सामान्य रूप से ठीक काम करती है (उदाहरण के लिए 10 मशीन 200 इनपुट प्रोसेसिंग)। हालांकि, जब मैं इसे बड़े डेटा सेट के खिलाफ चलाए (12 मशीनों, 6000 आदानों की कुल प्रसंस्करण इनपुट प्रति के बारे में 20 सेकंड में), क्रंचिंग मैं निम्नलिखित त्रुटि मिलती है के 2.5 घंटे के बाद:अमेज़ॅन लोचदार MapReduce - SIGTERM

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 143 
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:372) 
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:586) 
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:135) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57) 
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:441) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:377) 
at org.apache.hadoop.mapred.Child$4.run(Child.java:255) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:396) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132) 
at org.apache.hadoop.mapred.Child.main(Child.java:249) 

अगर मैं पढ़ रहा हूँ यह सही ढंग से, subprocess कोड 143 के साथ विफल रहा क्योंकि किसी ने स्ट्रीमिंग नौकरी के लिए एक सिगरेट सिग्नल भेजा था।

क्या मेरी समझ सही है? यदि हां: तो ईएमआर इंफ्रास्ट्रक्चर एक सिगरेट कब भेजेगा?

+0

क्या आपने क्लाउडवॉच मीट्रिक को जांचने के लिए यह देखा कि क्या आप किसी प्रकार की आईओ सीमा को मार रहे हैं? मेरे अनुभव से, एक बार जब आप आईओ सीमा को हिट करते हैं तो कुछ अजीब चीजें होने लगती हैं। मुझे नहीं पता कि आप किस डेटा प्रकार का उपयोग अपने डेटा नोड्स के लिए कर रहे थे, लेकिन मैं बड़ी नौकरियों को चलाने के दौरान तेज आईओ प्रदर्शन के साथ कुछ अपग्रेड करने का सुझाव दूंगा। – Edenbauer

+0

बात यह है कि प्रत्येक कार्य सीपीयू-बाध्य है, दुर्लभ और स्पोरैडिक I/O के साथ। यह क्या करता है कि यह एस 3 से एक फ़ाइल लोड करता है, और फिर लगभग 20 सेकंड के लिए बहुत सी भारी CPU प्रसंस्करण करता है। प्रत्येक 5 सेकंड में यह एक और (इंटरमीडिएट) फ़ाइल को S3 पर संग्रहीत करता है। यह कुछ बाहरी पुस्तकालयों (एलएक्सएमएल, विज्ञान-सीखने) का उपयोग करता है, और मैं सोच रहा था कि उनमें से एक मुझे विफल कर रहा था (स्मृति खपत में वृद्धि के द्वारा?), और ईएमआर आधारभूत संरचना एक सिगरेट भेज रही थी। यह सत्यापित करने के लिए, मैं मामलों/परिदृश्यों को समझने की कोशिश कर रहा हूं जब ईएमआर एक प्रक्रिया को सिगरेट कर सकता है। – slavi

उत्तर

10

मुझे पता चला कि क्या हो रहा था, इसलिए अगर कोई और इसी तरह की समस्याओं का अनुभव करता है तो यहां कुछ जानकारी दी गई है।

मेरे लिए कुंजी "जॉबट्रैकर" लॉग को देखना था। इन के तहत अपने काम के लॉग S3 पर/फ़ोल्डर में रहते हैं,:

<logs folder>/daemons/<id of node running jobtracker>/hadoop-hadoop-jobtracker-XXX.log. 

निम्न प्रकार के कई पंक्तियों थे:

2012-08-21 08:07:13,830 INFO org.apache.hadoop.mapred.TaskInProgress 
    (IPC Server handler 29 on 9001): Error from attempt_201208210612_0001_m_000015_0: 
    Task attempt_201208210612_0001_m_000015_0 failed to report status 
    for 601 seconds. Killing! 

तो मेरी कोड बाहर समय था, और यह मार डाला जा रहा था (यह 10 मिनट के कार्य समय समाप्ति से आगे जा रहा था)। 10 मिनट मैं कोई आई/ओएस नहीं कर रहा था, जिसे निश्चित रूप से उम्मीद नहीं थी (मैं आमतौर पर हर 20 सेकंड में एक I/O करता हूं)। ।

http://devblog.factual.com/practical-hadoop-streaming-dealing-with-brittle-code

"हमारे विज्ञान परियोजनाओं में से एक में, हम कुछ Hadoop स्ट्रीमिंग नौकरियों माणिक के साथ चलने और libxml पर भरोसा करते हैं कि दस्तावेजों पार्स करने के लिए है यह एक आदर्श बनाता है:

मैं तो इस लेख की खोज की बुराई का तूफान - वेब वास्तव में खराब एचटीएमएल से भरा है और libxml कभी-कभी अनंत लूप या पूरी तरह से segfaults में चला जाता है। कुछ दस्तावेजों पर, यह हमेशा segfaults। "

यह इसे दबाया। मुझे इनमें से एक "libxml अनंत लूप में जा रहा है" परिस्थितियों का अनुभव करना होगा (मैं libxml का भारी उपयोग कर रहा हूं - केवल पाइथन के साथ, रुबी नहीं)।

मेरे लिए अंतिम चरण स्किप मोड को ट्रिगर करना था (यहां निर्देश: Setting hadoop parameters with boto?)।

+0

अपनी समस्या का उत्तर पोस्ट करने के लिए धन्यवाद। इससे मुझे एक समान व्यक्ति को डीबग करने में मदद मिली। –

+0

डिट्टो, मैं एक mrjob hadoop नौकरी चला रहा था जो मूल प्रश्न में पोस्ट किए गए किसी भी आउटपुट के अलावा कोई आउटपुट नहीं था। यह एकमात्र उपयोगी लॉग था जिसने मुझे रूट कारण खोजने में मदद की (हैडोप 2 मैपर कंटेनर मेमोरी से बाहर चल रहा था)। – jonson

1

मैं इस आउटपुट में अमेज़ॅन ईएमआर ("सबप्रोसेस कोड 143 के साथ असफल रहा) से भाग गया। मेरा स्ट्रीमिंग जॉब एक ​​सर्वर को डेटा भेजने के लिए PHP कर्ल का उपयोग कर रहा था जिसमें मैपरेडस जॉब सर्वर अपने सुरक्षा समूह का हिस्सा नहीं था। इसलिए reducer समय बाहर और मार डाला गया था। आदर्श रूप से मैं अपनी नौकरियों को एक ही सुरक्षा समूह में जोड़ना चाहता हूं लेकिन मैंने अपने एपीआई के अंदर एक यूआरएल सुरक्षा टोकन पैरामेट जोड़ने का विकल्प चुना है।

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