【发布时间】:2019-04-12 03:24:27
【问题描述】:
我有一个任务需要执行以下操作
for fi in files, do in parallel:
for job in jobs, do serially:
read fi into memory from disk
do job(fi), save output to disk
(任务的特殊性使得并行化内部循环变得不切实际。)
有数千个 files 和大约 400 个 jobs。现在files 是一堆.csv,我将输出保存到其他地方的一堆csv。输入 csv 大约 30MB,输出大约 10MB
我真正想要的是一个数据库,但我所知道的数据库无法处理并行 I/O。所以我只是从一堆csv中读取并保存。我知道操作系统也不能进行并行 I/O,但它比我知道的数据库更好地处理并行请求。
那么,有什么更好的方法来做到这一点?我在 AWS 上,现在一切都在 EBS 卷中。将所有输入推送到 S3 存储桶、根据需要下载它们并上传输出(每个文件大小为几 MB),我是否期望获得更好的性能?
或者是否有某种并行 I/O 数据库架构存在于云端某个地方,我可以了解然后租用?
感谢您就如何解决此问题提出建议。
【问题讨论】:
-
每个文件csv大概有多大?
-
@displayName 输入的 CSV 文件大约为 30MB。输出的大约是 10MB。问题已编辑
-
job(fi)的计算密集度如何? -
@displayName 相当大。我需要确保我的实例每个工作人员有大约 6 GB 的 RAM。
-
多久会重复一次?您是在寻找短期解决方案还是长期流程?
标签: database algorithm amazon-web-services parallel-processing disk