Amazon web services Amazon EMR上的s3fs:它能扩展到大约1亿个小文件吗?

Amazon web services Amazon EMR上的s3fs:它能扩展到大约1亿个小文件吗?,amazon-web-services,amazon-s3,hdfs,amazon-emr,s3fs,Amazon Web Services,Amazon S3,Hdfs,Amazon Emr,S3fs,请参考已经提出的以下问题: 和 此处处理的数据大小至少在4-5TB左右。精确地说-300GB,采用gzip压缩 随着时间的推移,随着该步骤对数据的聚合,输入的大小将逐渐增加 例如,截至2012年12月的日志将包含: UDID-1, DateTime, Lat, Lng, Location UDID-2, DateTime, Lat, Lng, Location UDID-3, DateTime, Lat, Lng, Location UDID-1, DateTime, Lat, Lng, Lo

请参考已经提出的以下问题: 和

此处处理的数据大小至少在4-5TB左右。精确地说-300GB,采用gzip压缩

随着时间的推移,随着该步骤对数据的聚合,输入的大小将逐渐增加

例如,截至2012年12月的日志将包含:

UDID-1, DateTime, Lat, Lng, Location
UDID-2, DateTime, Lat, Lng, Location
UDID-3, DateTime, Lat, Lng, Location
UDID-1, DateTime, Lat, Lng, Location
为此,我们必须以UDID(唯一设备标识符)作为文件名生成单独的文件,并按排序顺序在文件中生成属于该UDID的记录

例:

现在,当我们有2013年1月的日志时,此步骤将读取旧数据、此步骤已为旧月份生成的文件以及新的日志,以聚合UDID的数据

例:

对于这一步,我们考虑将数据写入EBS卷并保持原样以供以后使用。但EBS卷的容量限制为1TB。正如参考问题中已经提到的,直接在s3上生成文件或在HDFS上生成文件,然后移动到s3对于这个用例来说不是一个可行的选择,因为大约有1亿个小文件需要移动。即使使用s3distcp,移动如此大量的文件也太慢了

所以,接下来我们将尝试AmazonS3支持的基于s3fs-FUSE的文件系统。有人知道s3fs的可伸缩性有多大吗?它能处理1亿个小文件吗?将3-5TB的数据(分布在1亿个文件中)从s3移动到本地文件系统需要多长时间才能供MR作业使用?将数据移回s3需要多长时间?它是否会遇到与使用s3distcp时相同的问题


提前谢谢

我建议不要使用s3fs复制大量小文件

我曾经尝试过几次从HDFS移动大量的小文件,而s3fs守护进程一直在崩溃。我同时使用了
cp
rsync
。如果您正在进行增量更新,这将变得更加糟糕。另一种方法是使用
use\u cache
选项并查看其行为

我们求助于使用s3cmd并迭代每个文件,比如使用Unix
find
命令。大概是这样的:

find <hdfs fuse mounted dir> -type f -exec s3cmd put {} s3://bucketname \;
s3cmd sync /<local-dir>/ s3://bucketname
find <hdfs fuse mounted dir> -type f -exec s3cmd put {} s3://bucketname \;
s3cmd sync /<local-dir>/ s3://bucketname