9

使用 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 的过程?

4

2 回答 2

5

对 EMR 映像执行任何操作的唯一方法是使用引导操作。从控制台执行此操作意味着您将仅更改主节点,而不更改执行处理的任务节点。引导操作在所有节点上启动时运行一次,并且可以是一个简单的脚本,可以执行 shell。

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
于 2012-06-07T02:20:05.107 回答
3

这个问题的当前答案是 NumPy 现在已经安装在 EMR 上。

如果您想将 NumPy 更新到比可用版本更新的版本,您可以运行一个脚本(作为引导操作)来执行sudo yum -y install numpy. 然后立即安装 NumPy。

于 2015-04-01T04:10:05.597 回答