(ubuntu 12.04)。我设想某种Queue可以放置成千上万的任务,并且让ec2意识并行地通过它(100 ec2实例),其中每个实例处理队列中的一个任务。
此外,每个ec2实例使用我提供的图像,其中将安装二进制文件和软件以供使用。
基本上我要做的是,在Amazon的EC2上并行运行100次处理(使用依赖于该映像上安装的二进制文件的python函数)一小时或更短时间,关闭它们,并重复此过程无论何时需要。
这可行吗?我正在使用Python Boto来做到这一点。
答案 0 :(得分:3)
这是可行的。您应该考虑使用SQS。作业被放置在队列中,工作器实例将队列中的作业弹出并执行适当的工作。作业完成后,工作人员将从队列中删除作业,因此不会多次运行作业。
您可以在启动时使用用户数据配置实例,也可以预先安装所有软件来烘焙AMI。我推荐Packer用于烘焙AMI,因为它工作得很好并且非常易编,因此可以在需要更改的情况下一致地重建AMI。
要打开和关闭大量实例,请查看使用AutoScaling。只需将组所需的容量设置为您想要运行的工作程序实例的数量,它将负责其余的工作。
答案 1 :(得分:2)
这听起来像使用EMR可能更容易。
你在评论中提到你正在做计算机视觉。您可以通过准备一个文件来使您的工作具有友好性,其中每行都是图像文件的base64编码。
您可以准备一个简单的引导脚本,以确保群集的每个节点都安装了您的软件。 Hadoop流将允许您按原样使用图像处理代码(而不是在java中重写)。
当您的工作结束时,将关闭群集实例。您还可以指定您的输出直接流式传输到S3存储桶,它全部都是干的.EMR也很便宜,运行一小时的100 m1.medium EC2实例根据最新的定价只需2美元左右:{{ 3}}