针对大量小文件优化 S3 下载

     2023-04-18     225

关键词:

【中文标题】针对大量小文件优化 S3 下载【英文标题】:Optimize S3 download for large number of tiny files 【发布时间】:2018-04-18 14:59:53 【问题描述】:

我目前使用 TransferManager 从 Lambda 函数下载 S3 存储桶中的所有文件。

// Initialize
TransferManagerBuilder txBuilder = TransferManagerBuilder.standard();
// txBuilder.setExecutorFactory(() -> Executors.newFixedThreadPool(50));
TransferManager tx = txBuilder.build();
final Path tmpDir = Files.createTempDirectory("/tmp/s3_download/");

// Download
MultipleFileDownload download = tx.downloadDirectory(bucketName,
                                                     bucketKey,
                                                     new File(tmpDir.toUri()));
download.waitForCompletion();

return Files.list(tmpDir.resolve(bucketKey)).collect(Collectors.toList());

似乎需要大约300 seconds 来下载10,000 files(大小为~20KB each),给我一个大约666 KBps 的传输率。 增加线程池大小似乎根本不会影响传输率。

S3 终端节点和 lambda 函数位于同一个 AWS 区域和同一个 AWS 账户中。

如何优化 S3 下载?

【问题讨论】:

【参考方案1】:

处理大量数据始终需要针对底层系统构建存储架构。

如果您需要高吞吐量,则需要对 s3 密钥进行分区,以便它可以容纳大量请求。分布式计算有自己的需求来提供高性能服务,这就是这样的需求。

请求速率注意事项:

https://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

传输加速:

https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

如何提高吞吐量:

https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-performance-improve/

希望对你有帮助。

EDIT1

我看到您正在尝试将文件下载到临时存储,您需要了解存储限制。这些不适用于批量处理。

https://docs.aws.amazon.com/lambda/latest/dg/limits.html

【讨论】:

我的文件确实附有哈希前缀。我正在寻找能够帮助我实现接近每秒 300 个请求的解决方案(当前的 TransferManager 每秒给我大约 33 个文件)。由于我的工作量,CloudFront 也不适合我。 更新了答案 感谢您指出 Lambda 限制。我知道临时存储,并且我正在尝试处理完全在这些限制范围内的文件(10,000 个大小为 ~20KB 的文件,每个 ~=200MB 这在 Lambda 存储中无法处理。您需要使用外部存储来实现可扩展性。

从 S3 存储桶中读取大量 CSV 文件

】从S3存储桶中读取大量CSV文件【英文标题】:ReadlargenumberofCSVfilesfromS3bucket【发布时间】:2020-09-0823:16:42【问题描述】:我想从S3存储桶中读取大量csv文件。CSV文件位于不同的分区中。我正在使用Boto3列出所有到csv的路径。然后... 查看详情

为生产优化 js - 大量小或一个大的 js 文件

】为生产优化js-大量小或一个大的js文件【英文标题】:Optimisingjsforproduction-Lotsofsmalloronelargejsfile【发布时间】:2014-06-1810:37:33【问题描述】:我有一个AngularJS应用程序,我希望对其进行优化以提高速度。我目前正在将我需要的... 查看详情

iOS Swift 在后台下载大量小文件

】iOSSwift在后台下载大量小文件【英文标题】:iOSSwiftdownloadlotsofsmallfilesinbackground【发布时间】:2016-11-0314:21:59【问题描述】:在我的应用中,我需要下载具有以下要求的文件:下载大量(例如3000个)小PNG文件(例如5KB)一个一... 查看详情

将 S3 上的数百万个小文件存档到 S3 Glacier Deep Archive

...00个50KB文件,我想将它们传输到GlacierDA。我开始意识到将大量小文件传输到Glacier的成本效率低下。假设我不介意将我的文件 查看详情

在s3中使用pyspark合并多个小json文件[重复]

】在s3中使用pyspark合并多个小json文件[重复]【英文标题】:mergemultiplesmalljsonfilesusingpysparkins3[duplicate]【发布时间】:2020-02-1523:24:13【问题描述】:我是spark的新手。我的s3存储桶的子目录中有多个小的json文件(1kb)。我想合并单个... 查看详情

在 S3 上分析大量 JSON 文件

】在S3上分析大量JSON文件【英文标题】:AnalyzinghugeamountofJSONfilesonS3【发布时间】:2014-01-1514:56:22【问题描述】:我有大量的json文件,总共>100TB大小,每个json文件是10GBbzipped,每行包含一个json对象,它们存储在s3上如果我想将j... 查看详情

针对大量小数据的 IPC 建议 [关闭]

】针对大量小数据的IPC建议[关闭]【英文标题】:IPCSuggestionforlotsofsmalldata[closed]【发布时间】:2012-04-1711:15:06【问题描述】:我们将实施一个多进程软件,我们正在寻找合适的IPC。事实:我们将使用Java(如果遇到时间紧迫的问题... 查看详情

hive任务优化——小文件合并相关参数(代码片段)

...熟悉hdfs的都知道,hdfs不建议存储小文件,原因是大量的小文件会给namenode带来太大的负担。因此,我们在使用hdfs过程中应该尽量保证输出到hdfs的文件不会有大量零碎的小文 查看详情

如何使用 AppSync 从 S3 下载公开可用的 pdf 和 png 文件

...(PDF和PNG)时遇到了问题。我查看了数十个教程并翻阅了大量文档,但我不确定 查看详情

历史文档小程序启动速度优化实践(代码片段)

...动到渲染完成主要会经历以上几个过程,接下来我们针对以上部分进行优化说明。代码下载加载阶段众所周知,小程序本身使用的是JS,HTML,CSS等语言进行开发。所以在代码发布时,微信会对这些文本文件进行必要的体... 查看详情

历史文档小程序启动速度优化实践(代码片段)

...动到渲染完成主要会经历以上几个过程,接下来我们针对以上部分进行优化说明。代码下载加载阶段众所周知,小程序本身使用的是JS,HTML,CSS等语言进行开发。所以在代码发布时,微信会对这些文本文件进行必要的体... 查看详情

历史文档小程序启动速度优化实践(代码片段)

...动到渲染完成主要会经历以上几个过程,接下来我们针对以上部分进行优化说明。代码下载加载阶段众所周知,小程序本身使用的是JS,HTML,CSS等语言进行开发。所以在代码发布时,微信会对这些文本文件进行必要的体... 查看详情

hive优化之hive的配置参数优化

...数过多时可能意味着该表的小文件过多,这时候我们可以针对小文件的问题进行一些优化,HDFS本身提供了解决方案:(1)HadoopArchive/HAR:将小文件打包成大文件。(2)SEQUENCEFILE格式:将大量小文件压缩成一个SEQUENCEFILE文件。(3... 查看详情

从s3存储桶下载百万个文件(代码片段)

我在S3存储桶上的不同文件夹中有数百万个文件。文件非常小。我希望下载名为VER1的文件夹下的所有文件。文件夹VER1包含许多子文件夹,我希望下载VER1所有子文件夹下的所有百万文件。(例如VER1->sub1->file1.txt,VER1->sub1-&g... 查看详情

处理从 Amazon S3 下载的多个文件?

】处理从AmazonS3下载的多个文件?【英文标题】:HandlingmultiplefiledownloadsfromAmazonS3?【发布时间】:2010-10-0223:48:56【问题描述】:我有一个为客户存储全尺寸图像的私人存储桶,所有缩略图和较小尺寸都在网络服务器上。当用户想... 查看详情

openssh升级小结(针对suse系统)

这几天因为安全漏洞扫描,扫描到时大量OPENSSH漏洞,需安全加固,主要是升级版本,以前对于升级打补丁总是不在意的,可这次中间遇到一些小问题整理成册,希望对大家有点帮助,以下是具体实现方法:主要方法:网上找的... 查看详情

从 s3 到 Redshift 的数据复制:清单与我需要下载的文件位于不同的存储桶中

...2017-11-1614:56:03【问题描述】:我正在尝试将数据从s3中的大量文件复制到Redshift。我对包含这些文件的s3存储桶具有只读访问权限。为了有效地复制它们,我创建了 查看详情

hadoop小文件优化方法(代码片段)

...meNode的内存中,因此HDFS存储小文件会非常低效。因为大量的小文件会耗尽NameNode中的大部分内存。但注意,存储小文件所需要的磁盘容量和数据块的大小无关。例如,一个1MB的文件设置为128MB的块存储,实际使用... 查看详情