2017-05-17 75 views
5

AWS veri yolunda bir emr adımı ayarlıyorum. adım komut şuna benzer:AWS Emr'de Mxnet başarısızken Hadoop akış işi

/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 

aşağıdaki hatayı ben (tek bir düğüm Hadoop ayarlarına) Masaüstümdeki ve çalışma üzerinde ayrı ayrı redüktör adımını çalışan denedi

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 

alıyorum. Redüktör komut dosyasına zaten #!/usr/bin/env python'u ekledim. EMR adımını doğru yazamadığımdan şüpheleniyorum.

EMR version: 5.5.0 

DÜZENLEME: redüktör kodu EMR başarısız olduğu daha fazla araştırma sonra , kod tam çizgi bulduk. Redüktörde mxnet kütüphanesini kullanarak Machine Learning tahminlerini yapıyorum. Model parametrelerini yüklediğimde redüktör arızalanır. API dokümana referans I [os.listdir(os.getcwd()) kullanarak] EMR düğümünün mevcut çalışma dizinini kontrol ettikten ve parameters.bin dosyası (Hatta başarılı bir dosya içeriğini baskılı) genel içeren here

module.load_params('parameters.bin') 

olup. Akış işinin tek düğümlü yerel kurulumumda düzgün çalıştığını tekrar belirtmek istiyorum.

EDIT2: Ben bir blok deneyin-haricinde benim redüktör kodunu kapalı 2'ye düşürücü görevler sayısını ayarlamak ve ben (diğeri ince çalışır) görevlerden birinde

aşağıdaki hatayı görebilirsiniz
[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

Lütfen kodunuzla ilgili sorunu güncelleyin çünkü çıkış kodu 1 yanlış kodunuzdan kaynaklanıyor olabilir. –

+0

@RameshMaharjan Daha önce belirttiğim gibi, kodumu masaüstümde tek bir düğüm kümesiyle çalıştırmayı denedim ve iyi çalışıyor. – ishan3243

+0

Mümkün mü: * MXNet'in kurulu olan sürümünü sağlayın; * 'parameters.bin' dosyasını sağlayın; Bir noktada, MXNet gerçek bir tensörün gerçek şekliyle farklı şekillerde olmasını bekliyor. –

cevap

1

Sorunu çözdüm. Aslında, mxnet tarafından beklenen şekiller veri kümesine bağlıydı (gerçekte veri kümesindeki maksimum değere bağlıydı). Eğitim tek bir gpu kutusunda gerçekleşir ve tüm veri kümesine sahiptir. Bununla birlikte, tahmin, eğitimde kullanılan tüm verilere sahip olduğu için tek düğüm kurulumuyla iyi çalışır. Ancak, çok düğümlü küme kullanıldığında, veri kümesi, her düğüm için farklı maksimum değeri oluşturan bölme olur. Bu, hataya neden oldu.

Şimdi, veri kümesinden bağımsız olarak beklenen şekilleri oluşturdum ve bu hata artık oluşmuyor. Umarım bu durumları açıklığa kavuşturur.