用于短期任务的Amazon EC2按需工作者

mik*_*ing 18 r amazon-ec2 amazon-emr amazon-swf

我正在寻找构建一个Web应用程序,它需要在R中按需运行资源密集型MCMC(马尔可夫链蒙特卡罗)计算,以便为用户生成一些概率图.

约束:

  1. 显然,我不希望在与Web应用程序前端相同的服务器上运行资源密集型计算,因此需要将这些任务交给工作者实例.

  2. 这些计算需要运行大量的CPU,并且我希望将延迟保持在尽可能低的水平(希望是秒,而不是几分钟),所以我宁愿在更强大的硬件上运行计算.

  3. 我不能以~66¢/ hr x 24小时/天运行强大的EC2实例,因此可能需要按需或点请求实例.

以下是我提出的选项:

  1. 每天24小时运行廉价,经济实惠的工作实例,在Amazon SWF(或SQS)管理的时间内执行一项任务.

    缺点:

    • 高延迟 - 更便宜的硬件,更长的等待时间.



  2. 每个任务生成一个更强大的工作者实例(每当作业添加到队列时旋转)并在完成时终止实例.

    缺点:

    • 昂贵/浪费 - 我每次都要在服务器上支付一个小时的费用,而且我的计算只需要几秒钟

    • 启动开销 - 按需启动新的EC2实例会引入不可忽略的延迟(抵消使用更强大的硬件的整个目的)吗?



  3. 与#2类似,但具有低出价的EC2现场请求.

    缺点:

    • 启动开销 - 见#2

    • inconsistancy? - 我之前从未使用过现场请求,所以我不知道这样的解决方案有多么不稳定或动手......我是否必须不断调整我的出价以确保我仍能在高峰时段完成任务?此外,我想我必须密切监视我的过程,以确保它们不会在计算中间被中断.



  4. 某种混合溶液中,我积极监测仡硬件工人实例及其负载并智能地旋转起来,并终止情况下的时间来维持的成本和可用性的最佳平衡

    缺点:

    • 复杂而昂贵的设置 - 除非有一个好的托管服务来处理这样的事情,否则我必须自己设置所有这些基础设施......

我希望有一些服务,我可以在一分钟到一分钟而不是每小时支付高度可用的按需硬件.

所以我的问题如下:

  • 你会如何推荐解决这个问题?

  • 是否有一个好的EC2实例管理解决方案可以位于Amazon SWF之上并帮助我实现负载平衡并终止闲置工作人员?

  • 现货请求出价是否可以解决我的问题,还是更适合那些不一定需要立即完成的任务?

Kob*_*obi 5

我希望有一些服务可以让我按分钟而不是按小时付费购买高度可用的按需硬件。

该服务是AWS Lambda,当您提出问题时该服务不可用:

Lambda 在高可用性计算基础设施上运行您的代码,并执行计算资源的所有管理,包括服务器和操作系统维护、容量配置和自动扩展

价钱

根据您的函数的请求数量和代码执行时间向您收费

持续时间是从代码开始执行到返回或以其他方式终止的时间计算的,四舍五入到最接近的 100ms

Lambda 免费套餐包括每月 100 万个免费请求和每月 400,000 GB 秒的计算时间。

您还可以使用HTTP 端点包装 Lambda 函数,可能会从您的应用程序中删除该层:

您可以使用 Amazon API Gateway 定义自定义 RESTful API,通过 HTTPS 调用 Lambda 函数。这为您的函数提供了一个端点,可以响应 GET、PUT 和 POST 等 REST 调用。了解有关将 AWS Lambda 与 Amazon API Gateway 结合使用的更多信息。

注意:Lambda 目前仅支持 JavaScript、Java 和 Python,因此我不确定如何让 R 工作。您可能需要在这些运行时之一中托管 R。


小智 4

您可能不知道还有另一种选择。我实际上只是偶然发现它: http: //multyvac.com

我没有使用它的经验(所以我不能保证它),但它看起来像是我见过的第一个真正提供真正“效用计算”的解决方案。最初仅支持 Python,但现在支持任何语言。