将大文件(大于5GB)从HDFS上传到S3时出现问题。有没有办法将文件直接从HDFS上传到S3而无需将其下载到本地文件系统并使用multipart?
答案 0 :(得分:3)
要在HDFS和S3之间复制数据,您应该使用s3DistCp
。 s3DistCp
针对AWS进行了优化,可以跨S3存储桶并行地高效复制大量文件。
有关s3DistCp
的使用,您可以在此处参阅文档:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html
s3DistCp
的代码可在此处找到:https://github.com/libin/s3distcp
答案 1 :(得分:2)
如果您使用的是Hadoop 2.7.1或更高版本,请使用s3a://文件系统与S3通信。它支持多部分上传,这是您需要的。
更新:2016年9月
我应该补充一点,我们正在为Hadoop 2.8重新编写S3A输出流工作;当前的一个缓冲区在堆中缓冲多部分上传,当您生成批量数据的速度超过网络可以推送到s3时,它会倒下。