使用mrjob在Amazon的Elastic MapReduce上运行python代码我已成功找到一种方法来升级EMR图像的numpy和scipy.
从控制台运行以下命令有效:
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的过程?
对EMR映像执行任何操作的唯一方法是使用引导操作.从控制台执行此操作意味着您将只更改主节点而不是更改进行处理的任务节点.Bootstrap操作在启动时在所有节点上运行一次,并且可以是一个获得shell exec的简单脚本.
elastic-mapreduce --create --bootstrap-action "s3://bucket/path/to/script" ...
要加快对EMR映像的更改,请对安装后的文件进行tar操作并上传到S3.然后使用引导操作进行下载和部署.您必须为32位(微型,小型,中型)和64位机器保留单独的存档.
在脚本中从S3下载的命令是:
hadoop fs -get s3://bucket/path/to/archive /tmp/archive