Amazon ec2 要使用哪个AWS产品来运行批处理作业?

Amazon ec2 要使用哪个AWS产品来运行批处理作业?,amazon-ec2,Amazon Ec2,我有一个用C++11编写的程序。在当前输入上,运行时间太长。幸运的是,数据可以安全地分割成块进行并行处理,这使得它很适合于Map/Reduce服务 AWS EMR可能是一个可行的解决方案。然而,由于我的代码使用了许多现代库,因此在为ApacheHadoop集群分配的实例上编译它是相当痛苦的。例如,我想使用SOCI(不可用),Boost 1.58 +(1.53是)等。我还需要一个现代C++编译器。 显然,所有库和编译器都可以手动升级(并编写过程脚本),但这听起来像是很多手动工作。那么从节点呢?它们

我有一个用C++11编写的程序。在当前输入上,运行时间太长。幸运的是,数据可以安全地分割成块进行并行处理,这使得它很适合于Map/Reduce服务

AWS EMR可能是一个可行的解决方案。然而,由于我的代码使用了许多现代库,因此在为ApacheHadoop集群分配的实例上编译它是相当痛苦的。例如,我想使用SOCI(不可用),Boost 1.58 +(1.53是)等。我还需要一个现代C++编译器。 显然,所有库和编译器都可以手动升级(并编写过程脚本),但这听起来像是很多手动工作。那么从节点呢?它们会得到所有的库吗?不知怎么的,我不确定。而初始化环境的整个过程现在可能需要很长的时间——从而扼杀了分配作业本来应该带来的许多性能优势

另一方面,我并不真正需要ApacheHadoop提供的所有高级功能。我不想用我自己安装的Hadoop或类似软件来建立一个个人永久集群,因为我只需要周期性地运行任务,而且大部分时间服务器都是空闲的,这是在浪费金钱

那么,能够做到以下几点的最佳产品(或总体战略)是什么:

  • 获取给定的二进制文件+输入文件集
  • 使用最新的Linux,最好是Ubuntu 15.10,在预定义数量的实例上运行二进制文件
  • 将生成的文件放在预定义的位置(S3 bucket?)
  • 关闭一切
我确信我可以使用aws工具编写许多脚本来手动实现这一点,但我真的不想重新发明轮子。有什么想法吗


提前谢谢

老实说,编写脚本非常容易,而且您可能需要在服务器启动时使用脚本来获取最新的代码。我建议考虑定义一个具有预定缩放策略的自动缩放组。或者,您可以安排一个Lambda函数运行并发出API命令来创建实例


您可以在服务器AMI上有一个启动脚本,也可以在创建实例时简单地传递一个用户数据脚本,该脚本将提取二进制文件和输入文件并运行命令。脚本的最后一步可能是将结果复制到S3并关闭服务器。

这个(相对较新的)是专门为此而设计的。

所以,基本上,你不知道有什么产品可以让我的生活更轻松?我已经开始研究aws cli,但希望其中一些已经自动化。我会研究自动缩放的东西,谢谢这个项目已经过去了。当时我做了我说过要做的事——我写了一个脚本,它自动化了从编译二进制文件到将任务分割成块,然后创建EC2实例、推送二进制文件和工作分配、监视、生成结果和邮寄报告的整个过程。最终得到了一个非常简单的python脚本,但它运行得非常好。为不太懂技术的最终用户提供了一个GUI界面。