Kar*_*nha 5 amazon-s3 amazon-web-services hdfs amazon-emr s3fs
请参考以下问题: 在EMR中写入1亿个文件到s3 和 打开太多文件
这里处理的数据大小至少约为4-5TB.准确地说 - 使用gzip压缩300GB.
随着此步骤随时间聚合数据,输入的大小将逐渐增加.
例如,截至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
Run Code Online (Sandbox Code Playgroud)
为此,我们必须生成具有UDID(唯一设备标识符)的单独文件作为文件名,并按排序顺序生成属于该UDID的文件中的记录.
例如:
UDID-1.dat => File Contents
DateTime1, Lat1, Lng1, Location1
DateTime2, Lat2, Lng2, Location2
DateTime3, Lat3, Lng3, Location3
Run Code Online (Sandbox Code Playgroud)
现在,当我们获得2013年1月份的日志时,此步骤将同时读取旧数据,此步骤已为较旧月份生成的文件以及用于聚合UDID数据的较新日志.
例如:
If the logs for month of Jan has a record as: UDID-1, DateTime4, Lat4, Lng4, Location4, the file UDID-1.dat would need to be updated with this data. Each UDID's file should be chronologically sorted.
Run Code Online (Sandbox Code Playgroud)
对于此步骤,我们考虑将数据写入EBS卷并保持原样以供以后使用.但EBS的数量限制为1TB.正如在引用的问题中已经提到的那样,直接在s3上生成文件或在HDFS上生成然后移动到s3对于这个用例来说不是一个可行的选择,因为需要移动大约1亿个小文件.即使使用s3distcp,移动如此大量的文件也太慢了.
那么,接下来我们将尝试s3fs - 由Amazon S3支持的基于FUSE的文件系统.有没有人知道s3fs的可扩展性如何?它能够处理1亿个小文件吗?从s3到本地文件系统将3-5TB数据传输到1亿个文件以便MR工作可以使用它需要多长时间?将数据移回s3需要多长时间?它会遇到与使用s3distcp时遇到的问题相同的问题吗?
提前致谢 !
我建议不要使用 s3fs 复制大量小文件。
我曾多次尝试从 HDFS 移动大量小文件,但 s3fs 守护进程不断崩溃。我同时使用cp和rsync。如果您正在进行增量更新,这会变得更加严重。一种替代方法是使用该use_cache选项并查看其行为方式。
我们求助于使用 s3cmd 并使用 Unix 命令迭代每个文件find。像这样的东西:
find <hdfs fuse mounted dir> -type f -exec s3cmd put {} s3://bucketname \;
Run Code Online (Sandbox Code Playgroud)
你也可以尝试s3cmd sync这样的事情:
s3cmd sync /<local-dir>/ s3://bucketname
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
975 次 |
| 最近记录: |