2017-05-17 30 views
5

में विफल होने वाले एमएक्सनेट का उपयोग करके हैडोप स्ट्रीमिंग जॉब मैंने एडब्ल्यूएस डाटापलाइन में एक एमआरआर कदम स्थापित किया है। कदम आदेश इस तरह दिखता है:एडब्ल्यूएस एमआर

/usr/lib/hadoop-mapreduce/hadoop-streaming.jar,-input,s3n://input-bucket/input-file,-output,s3://output/output-dir,-mapper,/bin/cat,-reducer,reducer.py,-file,/scripts/reducer.py,-file,/params/parameters.bin 

मैं निम्न त्रुटि

Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:322) 
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:535) 
    at org.apache.hadoop.streaming.PipeReducer.close(PipeReducer.java:134) 
    at org.apache.hadoop.io.IOUtils.cleanup(IOUtils.java:244) 
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:467) 
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:393) 
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:422) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 

Container killed by the ApplicationMaster. 
Container killed on request. Exit code is 143 
Container exited with a non-zero exit code 143 

Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1 
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:322) 
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:535) 
    at org.apache.hadoop.streaming.PipeReducer.close(PipeReducer.java:134) 
    at org.apache.hadoop.io.IOUtils.cleanup(IOUtils.java:244) 
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:467) 
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:393) 
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:422) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 

Container killed by the ApplicationMaster. 
Container killed on request. Exit code is 143 
Container exited with a non-zero exit code 143 

मैं अपने डेस्कटॉप (एक नोड Hadoop सेटअप पर) और उसके काम करने पर अलग से कम करने कदम चल कोशिश की है हो रही है। मैंने reducer स्क्रिप्ट में #!/usr/bin/env python पहले ही शामिल कर लिया है। मुझे संदेह है कि मैं ईएमआर चरण सही ढंग से नहीं लिख रहा हूं।

EMR version: 5.5.0 

संपादित करें: आगे की जांच पड़ताल के बाद, मैं कोड का सटीक लाइन में पता चला है जहां कम करने कोड ईएमआर में विफल हो रहा है। मैं रेड्यूसर में mxnet लाइब्रेरी का उपयोग कर मशीन लर्निंग पूर्वानुमान कर रहा हूं। जब मैं मॉडल पैरामीटर लोड करता हूं, तो reducer विफल रहता है। एपीआई दस्तावेज़ में संदर्भ here

module.load_params('parameters.bin') 

है मैं [os.listdir(os.getcwd()) का उपयोग कर] ईएमआर नोड की वर्तमान कार्यशील निर्देशिका जाँच की है और यह parameters.bin फ़ाइल (मैं भी फ़ाइल की सामग्री को सफलतापूर्वक मुद्रित है) शामिल हैं। मैं फिर से यह इंगित करना चाहता हूं कि स्ट्रीमिंग जॉब मेरे एकल-नोड स्थानीय सेटअप पर ठीक काम कर रहा है।

EDIT2: मैं 2. करने के लिए कम करने के कार्यों की संख्या निर्धारित मैं एक ब्लॉक कोशिश को छोड़कर में मेरी कम करने कोड संलग्न है और मैं कार्यों में से एक में निम्न त्रुटि देखते हैं (एक दूसरे को ठीक से चलता है)

[10:27:25] src/ndarray/ndarray.cc:299: Check failed: from.shape() == to->shape() operands shape mismatchfrom.shape = (119,) to.shape=(111,) 

Stack trace returned 10 entries:  
[bt] (0) /usr/local/lib/python2.7/site-packages/mxnet/libmxnet.so(+0xc72fc) [0x7f81443842fc]  
[bt] (1) /usr/local/lib/python2.7/site-packages/mxnet/libmxnet.so(+0xc166f4) [0x7f8144ed36f4] 
[bt] (2) /usr/local/lib/python2.7/site-packages/mxnet/libmxnet.so(+0xc74c24) [0x7f8144f31c24] 
[bt] (3) /usr/local/lib/python2.7/site-packages/mxnet/libmxnet.so(MXImperativeInvoke+0x2cd) [0x7f8144db935d]  
[bt] (4) /usr/lib64/libffi.so.6(ffi_call_unix64+0x4c) [0x7f8150b8acec] 
[bt] (5) /usr/lib64/libffi.so.6(ffi_call+0x1f5) [0x7f8150b8a615]  
[bt] (6) /usr/lib64/python2.7/lib-dynload/_ctypes.so(_ctypes_callproc+0x30b) [0x7f8150d9d97b] 
[bt] (7) /usr/lib64/python2.7/lib-dynload/_ctypes.so(+0xa915) [0x7f8150d97915] 
[bt] (8) /usr/lib64/libpython2.7.so.1.0(PyObject_Call+0x43) [0x7f815a69e183]  
[bt] (9) /usr/lib64/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x337d) [0x7f815a73107d] 
+0

कृपया अपने कोड के साथ प्रश्न अपडेट करें क्योंकि निकास कोड 1 आपके गलत कोड के कारण हो सकता है। –

+0

@RameshMaharjan जैसा कि मैंने पहले ही बताया है, मैंने अपने डेस्कटॉप पर एक नोड क्लस्टर के साथ कोड चलाने का प्रयास किया है और यह ठीक काम कर रहा है। – ishan3243

+0

क्या यह संभव है: * एमएक्सनेट इंस्टॉल किया गया संस्करण प्रदान करें; * 'पैरामीटर.बिन' फ़ाइल प्रदान करें; ऐसा लगता है कि किसी बिंदु पर एमएक्सनेट को वास्तव में जो कुछ मिलता है उससे टेंसर के विभिन्न आकार की अपेक्षा करता है। –

उत्तर

1

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

अब मैंने अपेक्षित आकार डेटा सेट से स्वतंत्र किए हैं और यह त्रुटि अब और नहीं हो रही है। मुझे उम्मीद है कि यह चीजों को स्पष्ट करता है।

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