在AWS中横向扩展内存消耗较高但计算能力较低的作业,并使用Docker:寻找最佳解决方案 [英] Scale out jobs with high memory consumption but low computing power within AWS and using Docker: finding best solution

查看:0
本文介绍了在AWS中横向扩展内存消耗较高但计算能力较低的作业,并使用Docker:寻找最佳解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

冗长的标题但重点是,我有一些具有以下要求的数据科学管道(基于python):

  1. 与基于服务器的内部&orchestrator进行协调
  2. 跨多个用户/产品/等运行,其中N可能相对较高
  3. 要分发且不受Orchestrator服务器限制的此作业的加载(&I)
  4. 这些作业由坞站映像支持
  5. 这些作业运行相对较快(从1秒到20秒,POST数据加载)
  6. 这些作业通常需要大量的I/O进出。
  7. spark必填
  8. 我希望最大限度地减少扩展/资源调配等方面的麻烦
  9. 数据(输入/输出)将存储在群集中的HDFS空间或AWS S3
  10. docker图像相对较大(包含数据科学堆栈)

我正在尝试了解最(A)经济高效但(B)快速的解决方案来并行这件事。目前候选人:

  1. AWS ECS
  2. AWS lambda支持容器镜像

请注意,无论出于何种目的,在集群内进行扩展/计算都是不可行的

我的问题是,我担心巨大的数据传输(合计)、多次调用docker镜像的巨大成本、在服务器中设置容器所花费的时间但做其他任何事情的时间非常短、在lambda函数出现问题时的无服务器管理和调试。

这类案件一般是怎么处理的?

推荐答案

这是一个非常好的问题。首先,也是最重要的,我会假设你在比较Lambda和ECS/Fargate(更多here关于背景Re Fargate))。虽然许多考虑因素适用于ECS/EC2,但ECS/Fargate是更接近Lambda的模型。

尽管如此,Fargate和Lambda有很大的不同,如果不考虑它们不同的编程和执行模型(基于事件驱动和基于服务),就很难对两者进行比较。这并不是说您不能像调用Lambda那样调用批处理作业在Fargate上运行,而是1)以相对较短的执行时间(1-20秒)和2)以您所暗示的规模...按需调用每个执行单元的Fargate任务可能过于苛刻(例如,由于任务大小的有限粒度,以及与Lambda的毫秒相比,任务开始时间在30-60秒的范围内)。在这种情况下,更好的比较是每个作业的Lambda调用模型与多个正在运行(且可水平扩展)的ECS/Fargate任务,后者可以支持每个任务多个作业。

您在分析中没有提到的一件事是,这些工作是否已经存在,或者它们是否已经存在,并且需要针对这些不同的模型中的一个或多个进行调整(Lambda 1:1、Fargate 1:1、Fargate 1:More)。一些客户可能会决定坚持使用特定型号,因为他们负担不起调整现有代码库的费用。

总的来说,我想说的是,如果需要从头开始创建软件,那么Lambda模型及其不干预方法似乎更适合这个用例。

但就什么会更便宜而言,很难"从理论上"做出决定。

这篇关于在AWS中横向扩展内存消耗较高但计算能力较低的作业,并使用Docker:寻找最佳解决方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆