gpt4 book ai didi

docker - 我应该如何处理从 S3 获取大型共享文件以供容器并行批处理

转载 作者:行者123 更新时间:2023-12-02 18:39:44 25 4
gpt4 key购买 nike

我在 S3 中有一些较大的文件 - 最多 40G

我想设置多个容器以使用 AWS Batch 处理每个文件 - 每个容器将获取较大文件的一小部分并对其进行分析,然后将一小部分结果返回到 S3。

由于大小,我不想为每个容器检索大文件的单独副本。

因为我使用的是 AWS Batch,底层服务器的数量和单个大小不一定是已知的(这取决于现货定价),因此将所有光栅预复制到所有服务器并不是一个好的选择。

在某些时候,容器将负责处理尚未在本地卷上的文件 block - 很容易将其复制,问题是,当 2 个或更多容器发现文件不存在,同时开始复制过来?

所以,我的问题是“什么是最好的模式来确保每个容器需要的文件在运行该特定容器的主机上的共享卷上可用,而不会产生竞争条件和容器相互依赖性?”

TIA西蒙

最佳答案

我会在提交作业时通过将文件 block 分配给批处理作业来构建它。例如,我会分配批处理作业 A 处理字节 0-1G,批处理作业 B 处理字节 1G-2G 等等。

您可以通过在提交作业时设置指示范围的环境变量来完成此操作。例如,对于您提交的第一份工作,您可以设置 RANGE_START=0RANGE_END=999999999。然后在容器内,您可以从 S3 获取该范围的字节并进行处理。例如,在 Python 中,您可以这样做:

import boto3
s3 = boto3.client("s3")
obj = s3.get_object(
Bucket="bucket",
Key="key",
Range="bytes 0-999999999"
)
content = obj["Body"].read()

关于docker - 我应该如何处理从 S3 获取大型共享文件以供容器并行批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com