我有一个用C ++ 11编写的程序。在当前输入上运行需要很长时间。幸运的是,数据可以安全地分成块进行并行处理,这使得它成为Map / Reduce服务的理想选择。
AWS EMR可能是一种可行的解决方案。但是,由于我的代码使用了许多现代库,因此在为Apache Hadoop集群分配的实例上编译它会非常痛苦。例如,我想使用soci(根本不可用),boost 1.58+(1.53就在那里)等等。我还需要一个现代的C ++编译器。
显然,所有库和编译器都可以手动升级(并且脚本编写过程),但这听起来像很多手动工作。奴隶节点怎么样 - 他们会获得所有的库吗?不知怎的,我不确定。现在,整个环境的整个过程可能需要很长时间 - 从而扼杀了许多性能优势,分配工作应该从一开始就引入。
另一方面,我并不真正需要Apache Hadoop提供的所有高级功能。而且我不想用自己安装的Hadoop或类似的设置个人永久集群,因为我只需要定期运行任务,大部分时间服务器都会空闲,浪费钱。
那么,可以做到以下几点的最佳产品(或整体策略)是什么:
我确信我可以使用aws工具编写一些脚本来手动实现,但我真的不想重新发明轮子。有什么想法吗?
提前致谢!
答案 0 :(得分:0)
老实说,编写脚本非常简单,并且您可能需要使用脚本来在服务器启动时获取最新代码。我建议考虑使用计划的扩展策略定义AutoScaling组。或者,您可以安排Lambda函数运行并发出API命令来创建实例。
您可以在服务器AMI上安装启动脚本,或者在创建实例时简单地传递用户数据脚本,从而下拉二进制文件并输入文件并运行命令。脚本的最后一步可能是将结果复制到S3并关闭服务器。
答案 1 :(得分:0)
(相对较新的)AWS Batch专门用于此目的。