4

我有一个简单的纯 C 程序,它接受一个整数作为输入,运行一段时间(比如说一个小时),然后返回一个文本文件。我想用从 1 到 1000 的输入整数运行这个程序 1000 次。

目前我正在并行运行这个程序(4 个处理器),需要 250 小时。该程序适合 AWS 微实例(我已经测试过)。是否可以在一小时内使用 AWS 中的 1000 个微型实例来完成整个工作?(成本约为 20 美元 - 0.02 美元/次)?

如果可能的话,是否有人对如何做到这一点有一些指导方针?如果不是,是否有人也有低预算的替代方案?

非常感谢!

4

3 回答 3

1

为了实现这一目标,您需要:

  • 创建一个 S3 存储桶来存储您的引导脚本、应用程序、输入数据和输出数据

  • 自定义轻量级 AMI:您可能想要创建一个自定义轻量级 AMI,它知道如何下载引导脚本

  • 引导脚本:将从您的 S3 存储桶下载您的软件,解析包含整数 [1..1000] 的自定义实例标签并下载任何其他数据。

  • 您的应用程序:进行处理。

  • 处理结束脚本是将结果上传到另一个结果 S3 存储桶并终止实例,您可能还希望发送SNS 通知以传达处理结束状态。

  • 如果您需要结果合并,您可能希望创建另一个实例并将其用作协调器,等待所有“处理结束”通知以完成处理。在这种情况下,您可能会考虑在未来使用Amazon 的 Hadoop map reduce引擎,因为它几乎可以免费完成所有这些繁重的工作。

于 2012-08-29T12:03:12.780 回答
0

您没有指定要使用哪种语言执行此操作,并且由于您用于部署程序的应用程序不必使用相同的语言,因此我建议您使用 C#。网络上有许多关于如何使用 SDK 以编程方式生成新 Amazon 实例的示例。例如:

如何在 .NET 中以编程方式启动 Amazon EC2 实例

您可以使用已经存在的程序创建自己的 AMI,但如果您想对其进行调整,这最终可能会很痛苦,因为它需要您重新创建整个 AMI。我建议创建一个额外的实例或简单地将程序托管在可从公共 URL 访问的位置。然后,我将创建某种服务,该服务将提前安装在 AMI 上,以允许我指定下载应用程序的 URL 以及该特定实例所需的任何命令行参数。

希望这可以帮助。

于 2012-08-28T15:55:09.063 回答
0

请注意,默认情况下,您只能按区域生成 20 个实例。您需要询问亚马逊才能使用更多实例。

如果您想要低成本但不关心延迟,您应该使用现场实例。

于 2012-08-30T12:22:11.463 回答