2011-11-11 37 views
9

Sử dụng mrjob để chạy mã python trên Bản đồ Đàn hồi của AmazonReduce của Amazon Tôi đã tìm thấy thành công một cách để nâng cấp hình ảnh và vệt bẩn của hình ảnh EMR.Numpy và Scipy với Amazon Elastic MapReduce

Chạy từ giao diện điều khiển các lệnh sau làm việc:

tar -cvf py_bundle.tar mymain.py Utils.py numpy-1.6.1.tar.gz scipy-0.9.0.tar.gz 

    gzip py_bundle.tar 

    python my_mapper.py -r emr --python-archive py_bundle.tar.gz --bootstrap-python-package numpy-1.6.1.tar.gz --bootstrap-python-package scipy-0.9.0.tar.gz > output.txt 

này bootstraps thành công NumPy mới nhất và scipy vào hình ảnh và hoạt động hoàn hảo. Câu hỏi của tôi là vấn đề tốc độ. Điều này mất 21 phút để cài đặt chính nó trên một ví dụ nhỏ.

Có ai có ý tưởng nào về cách tăng tốc quá trình nâng cấp gọn gàng và scipy không?

+0

Vấn đề của bạn là đây là phiên bản nhỏ chậm. Tôi nghĩ bạn sẽ không thấy bất kỳ tăng tốc thực sự nào trừ khi bạn chuyển sang các phiên bản Amazon lớn hơn. Đây có phải là 21 phút hơn và trên ~ 5-6 phút mà nó thường đòi hỏi EC2 để quay lên các trường hợp ở tất cả? – ely

+1

Tôi đồng ý rằng việc liên lạc với bản gốc quay lên mất một thời gian dài. Ai đó trong cộng đồng mrjob đã đề nghị thực hiện cài đặt này cho một cá thể công nhân, sau đó sử dụng ssh để đăng nhập vào cá thể công nhân, tải xuống thư mục cài đặt đã hoàn thành. Sau đó, tôi chỉ cần vượt qua thư mục cài đặt hoàn thành như một zip với các tập tin của tôi. Python chọn sử dụng NumPy và SciPy cục bộ thay vì các phiên bản đã cài đặt của Hadoop. – jtman

Trả lời

5

Cách duy nhất để làm bất cứ điều gì với hình ảnh EMR là sử dụng các hành động khởi động. Làm điều này từ bảng điều khiển có nghĩa là bạn sẽ chỉ thay đổi nút chính và không phải là các nút tác vụ thực hiện quá trình xử lý. Các hành động Bootstrap chạy một lần khi khởi động trên tất cả các nút và có thể là một kịch bản lệnh đơn giản được thực thi shell.

elastic-mapreduce --create --bootstrap-action "s3://bucket/path/to/script" ... 

Để tăng tốc độ thay đổi hình ảnh EMR, tải lên các tệp đã cài đặt và tải lên S3. Sau đó, sử dụng một hành động khởi động để tải xuống và triển khai. Bạn sẽ phải lưu trữ riêng cho các máy 32 bit (vi mô, nhỏ, trung bình) và 64 bit.

Các lệnh để tải về từ S3 trong kịch bản là:

hadoop fs -get s3://bucket/path/to/archive /tmp/archive 
2

Câu trả lời hiện tại cho câu hỏi này là NumPy đã được cài đặt trên EMR, bây giờ.

Nếu bạn muốn cập nhật NumPy lên phiên bản mới hơn phiên bản hiện có, bạn có thể chạy tập lệnh (dưới dạng hành động khởi động) có số sudo yum -y install numpy. NumPy sau đó được cài đặt trong thời gian không.

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