在AWS中横向扩展内存消耗较高但计算能力较低的作业,并使用Docker:寻找最佳解决方案 [英] Scale out jobs with high memory consumption but low computing power within AWS and using Docker: finding best solution
本文介绍了在AWS中横向扩展内存消耗较高但计算能力较低的作业,并使用Docker:寻找最佳解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
冗长的标题但重点是,我有一些具有以下要求的数据科学管道(基于python
):
- 与基于服务器的内部&orchestrator进行协调
- 跨多个用户/产品/等运行,其中N可能相对较高
- 要分发且不受Orchestrator服务器限制的此作业的加载(&I)
- 这些作业由坞站映像支持
- 这些作业运行相对较快(从1秒到20秒,POST数据加载)
- 这些作业通常需要大量的I/O进出。
- 否
spark
必填 - 我希望最大限度地减少扩展/资源调配等方面的麻烦
- 数据(输入/输出)将存储在群集中的
HDFS
空间或AWS S3
中
docker
图像相对较大(包含数据科学堆栈)
我正在尝试了解最(A)经济高效但(B)快速的解决方案来并行这件事。目前候选人:
AWS ECS
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屋!
查看全文