如何将大文件从HDFS上传到S3

How to upload large files from HDFS to S3

我在将大文件(大于 5GB)从 HDFS 上传到 S3 时遇到问题。有没有一种方法可以直接从 HDFS 上传文件到 S3 而无需将其下载到本地文件系统并使用 multipart?

要在HDFS 和S3 之间复制数据,您应该使用s3DistCps3DistCp 针对 AWS 进行了优化,可以跨 S3 存储桶并行高效地复制大量文件。

关于s3DistCp的用法,可以参考这里的文档:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html

s3DistCp 的代码可在此处获得:https://github.com/libin/s3distcp

如果您使用的是 Hadoop 2.7.1 或更高版本,请使用 s3a:// 文件系统与 S3 通信。它支持 multi-part 上传,这就是你需要的。

更新:2016 年 9 月

我应该补充一点,我们正在为 Hadoop 2.8 重新设计 S3A 输出流;当前的一个在堆中缓冲分段上传,并且当您生成批量数据的速度快于您的网络可以推送到 s3 的速度时就会崩溃。