2011-11-11 115 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立即安装。

相关问题