gpt4 book ai didi

Linux:大文件与大量文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:49 25 4
gpt4 key购买 nike

我正在 AWS 上运行的 Linux 上用 C 编写软件,它必须处理 7200 万个文件中的 240 TB 数据。

数据将分布在 24 个或更多节点上,因此每个节点上只有 10 TB,每个节点有 300 万个文件。

因为我必须每 60 秒向这 300 万个文件中的每一个附加数据,所以最简单和最快的事情就是能够同时打开这些文件中的每一个。

我无法将数据存储在数据库中,因为读取/写入数据的性能会太慢。我需要能够非常快速地读回数据。

我的问题:

1) 是否有可能打开 300 万个文件

2)如果可能的话,会消耗多少内存

3)如果可能的话,性能会不会很差

4) 如果不可能,我需要将所有单个文件组合成几十个大文件。 Linux 中有最大文件大小吗?

5) 如果不可能,我应该使用什么技术每 60 秒追加一次数据并跟踪它?

最佳答案

以下是对可以解决您的问题的架构的非常粗略的描述,假设当您有足够的实例时文件描述符的最大数量是无关紧要的。

首先,看看这个:

https://aws.amazon.com/blogs/aws/amazon-elastic-file-system-shared-file-storage-for-amazon-ec2/

https://aws.amazon.com/efs/

EFS 提供了一个共享存储,您可以将其挂载为文件系统。

您可以将所有文件存储在 EFS 的单个存储单元中。然后,您将需要一组以文件处理程序的全部容量运行的 N 台工作机器。然后,您可以使用 Redis 队列来分发更新。每个工作人员必须从 Redis 中取出一组更新,然后打开必要的文件并执行更新。

再说一次:打开文件处理程序的最大数量不会有问题,因为如果达到最大值,您只需要增加工作机器的数量,直到达到您需要的性能。

这是可扩展的,但我不确定这是否是解决您问题的成本最低的方法。

关于Linux:大文件与大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519246/

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