2011-11-11 47 views
9

使用mrjob在亞馬遜的彈性MapReduce上運行python代碼我已經成功地找到了一種方法來升級EMR圖像的numpy和scipy。Numpy and Scipy with Amazon Elastic MapReduce

從控制檯中運行以下命令的工作:

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 

這成功地引導了最新numpy的和SciPy的成圖像和完美的作品。我的問題是速度問題。這需要21分鐘將自己安裝在一個小實例上。

有沒有人有任何想法如何加快升級 numpy和scipy的過程?

+0

你的問題是它是一個很慢的小實例。除非您轉移到較大的Amazon實例,否則我認爲您不會看到任何實際的加速。這是21分鐘超過大約5-6分鐘的時間嗎?它通常需要EC2來啓動實例? – ely

+1

我同意與原始旋轉的交流本身需要很長時間。 mrjob社區中的某個人建議爲工作者實例進行此安裝,然後使用ssh登錄到工作者實例,下載完成的安裝目錄。然後,我只是通過我的文件以壓縮形式傳遞完成的安裝目錄。 Python選擇使用本地的NumPy和SciPy來代替hadoop的安裝版本。 – jtman

回答

5

對EMR圖像執行任何操作的唯一方法是使用引導操作。從控制檯執行此操作意味着您只會更改主節點,而不是執行處理的任務節點。 Bootstrap動作在所有節點上啓動時運行一次,並且可以是一個簡單的腳本,它可以執行shell。

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

要加快對EMR映像的更改,請先查找安裝後的文件並上傳到S3。然後使用引導操作下載和部署。你將不得不爲32位(微型,小型,中型)和64位機器分別存檔。

的命令從S3下載的腳本是:

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

目前這個問題的答案是,與NumPy已經安裝了電子病歷,現在。

如果要將NumPy更新爲比可用版本更新的版本,則可以運行sudo yum -y install numpy的腳本(作爲引導操作)。然後NumPy立即安裝。

相關問題