2017-05-17 24 views
5

Tôi đã thiết lập một bước emr trong đường dữ liệu AWS. Lệnh bước trông như thế này:Công việc phát trực tuyến Hadoop sử dụng Mxnet không thành công trong AWS Emr

/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 

Tôi nhận được lỗi sau

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 

Tôi đã cố gắng chạy bước giảm riêng rẽ trên máy tính để bàn của tôi (trên một thiết lập hadoop nút duy nhất) và làm việc của nó. Tôi đã bao gồm #!/usr/bin/env python trong tập lệnh giảm tốc. Tôi nghi ngờ rằng tôi không viết chính xác bước EMR.

EMR version: 5.5.0 

EDIT: Sau khi điều tra thêm, tôi đã phát hiện ra chính xác dòng mã nơi mã giảm được thất bại trong EMR. Tôi đang thực hiện các dự đoán về Học máy bằng cách sử dụng thư viện mxnet trong trình giảm tốc. Khi tôi tải các thông số mô hình, bộ giảm tốc sẽ thất bại. Liên quan đến API doc là here

module.load_params('parameters.bin') 

Tôi đã kiểm tra thư mục làm việc hiện tại của nút EMR [sử dụng os.listdir(os.getcwd())] và nó có chứa các tập tin parameters.bin (Tôi thậm chí còn in các nội dung tập tin thành công). Tôi muốn chỉ ra rằng công việc phát trực tuyến đang hoạt động tốt trên thiết lập cục bộ một nút của tôi.

EDIT2: tôi đặt số nhiệm vụ giảm đến 2. Tôi kèm đang giảm tốc của tôi trong một thử-trừ khối và tôi thấy các lỗi sau đây trong một trong những nhiệm vụ (một trong những khác chạy tốt)

[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

Vui lòng cập nhật câu hỏi bằng mã của bạn vì mã thoát 1 có thể là do mã sai của bạn. –

+0

@RameshMaharjan Như tôi đã chỉ ra, tôi đã thử chạy mã với một cụm nút duy nhất trên máy tính để bàn của tôi và nó hoạt động tốt. – ishan3243

+0

Có thể: * cung cấp phiên bản MXNet được cài đặt; * cung cấp tệp 'parameters.bin'; Dường như tại một số điểm, MXNet mong đợi hình dạng khác nhau của một tensor từ những gì nó thực sự nhận được. –

Trả lời

1

Tôi đã tìm ra vấn đề. Trên thực tế, các hình dạng được mong đợi bởi mxnet phụ thuộc vào tập dữ liệu (nó thực sự phụ thuộc vào giá trị tối đa trong tập dữ liệu). Đào tạo diễn ra trên một hộp gpu duy nhất và có toàn bộ tập dữ liệu. Tuy nhiên, dự đoán hoạt động tốt với thiết lập nút đơn vì nó có tất cả dữ liệu được sử dụng trong đào tạo. Nhưng khi cụm nhiều nút được sử dụng, tập dữ liệu sẽ được chia làm cho giá trị tối đa khác nhau cho mỗi nút. Điều này đã gây ra lỗi.

Tôi hiện đã tạo các hình dạng mong đợi độc lập với tập dữ liệu và lỗi này không còn xảy ra nữa. Tôi hy vọng điều này sẽ làm rõ mọi thứ.

Các vấn đề liên quan