2013-01-31 34 views
5

Tôi đang cố gắng sao chép tệp từ s3 sang hdfs bằng luồng công việc trong EMR và khi tôi chạy lệnh dưới đây, luồng công việc bắt đầu thành công nhưng cho tôi lỗi khi cố gắng sao chép tệp tới HDFS. Tôi có cần thiết lập bất kỳ quyền truy cập tệp đầu vào nào không?sao chép tệp từ amazon s3 sang hdfs bằng cách sử dụng s3distcp không thành công

Command:

--jobflow ./elastic-mapreduce j-35D6JOYEDCELA --jar s3: //us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar - -args '--src, s3: // odsh/input /, - dest, HDFS: /// người dùng

Output

công tác taskID = "task_201301310606_0001_r_000000" TASK_TYPE = "GIẢM" TASK_STATUS = "FAILED" FINISH_TIME = "1359612576612" ERROR = "java.lang.RuntimeException: Tác vụ Reducer không sao chép được 1 tệp: s3: // odsh/input/GL _01112_20121019.dat v.v. tại com.amazon.external.elasticmapreduce.s3distcp.CopyFilesReducer.close (CopyFilesReducer.java:70) tại org.apache.hadoop.mapred.ReduceTask.runOldReducer (ReduceTask.java:038) tại tổ chức. apache.hadoop.mapred.ReduceTask.run (ReduceTask.java:429) tại org.apache.hadoop.mapred.Child $ 4.run (Child.java:255) tại java.security.AccessController.doPrivileged (Native Method) tại javax.security.auth.Subject.doAs (Subject.java:396) tại org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1132) tại org.apache.hadoop.mapred.Child. main (Child.java:249)

Trả lời

6

Tôi nhận được cùng một ngoại lệ. Dường như lỗi được gây ra bởi một điều kiện chủng tộc khi CopyFilesReducer sử dụng nhiều trường hợp CopyFilesRunable để tải xuống các tệp từ S3. Vấn đề là nó sử dụng cùng một thư mục tạm thời trong nhiều chủ đề, và các chủ đề xóa thư mục tạm thời khi chúng được thực hiện. Do đó, khi một luồng hoàn thành trước khi một luồng khác xóa thư mục tạm thời mà một luồng khác vẫn đang sử dụng.

Tôi đã báo cáo sự cố với AWS, nhưng trong thời gian đó bạn có thể khắc phục lỗi bằng cách buộc trình giảm tốc sử dụng một chuỗi đơn bằng cách đặt biến s3DistCp.copyfiles.mapper.numWorkers thành 1 trong cấu hình công việc của bạn.

+0

ai biết nếu điều này được cố định bởi amazon? –

1

Tôi thấy cùng một vấn đề này do điều kiện chủng tộc gây ra. Chuyển số -Ds3DistCp.copyfiles.mapper.numWorkers=1 giúp tránh sự cố.

Tôi hy vọng Amazon sẽ sửa lỗi này.

2

Điều chỉnh số lượng công nhân không hiệu quả đối với tôi; s3distcp luôn thất bại trên một thể hiện nhỏ/trung bình. Tăng kích thước heap của công việc nhiệm vụ (thông qua -D mapred.child.java.opts=-Xmx1024m) đã giải quyết nó cho tôi.

Ví dụ sử dụng:

hadoop jar /home/hadoop/lib/emr-s3distcp-1.0.jar 
    -D mapred.child.java.opts=-Xmx1024m 
    --src s3://source/ 
    --dest hdfs:///dest/ --targetSize 128 
    --groupBy '.*\.([0-9]+-[0-9]+-[0-9]+)-[0-9]+\..*' 
    --outputCodec gzip 
Các vấn đề liên quan