Pat*_*ami 27
最好的方法是使用Hadoop的distcp命令.示例(在其中一个群集节点上):
% ${HADOOP_HOME}/bin/hadoop distcp s3n://mybucket/myfile /root/myfile
这会将名为mybucket的S3存储桶中名为myfile的文件复制到/root/myfileHDFS中.请注意,此示例假定您在"本机"模式下使用S3文件系统; 这意味着Hadoop将S3中的每个对象视为一个文件.如果在块模式下使用S3,则在上面的示例中将s3n替换为s3.有关本机S3和块模式之间差异的更多信息,以及上述示例的详细说明,请参阅http://wiki.apache.org/hadoop/AmazonS3.
我发现distcp是一个非常强大的工具.除了能够使用它来复制进出S3的大量文件之外,您还可以使用大型数据集执行快速的群集到群集副本.distcp不是通过单个节点推送所有数据,而是并行使用多个节点来执行传输.与将所有内容作为中介复制到本地文件系统的替代方法相比,这使得在传输大量数据时distcp速度更快.
Ama*_*mar 15
现在,亚马逊本身有一个通过distcp实现的包装器,即:s3distcp.
S3DistCp是DistCp的扩展,经过优化可与Amazon Web Services(AWS)配合使用,尤其是Amazon Simple Storage Service(Amazon S3).您可以通过将S3DistCp添加为作业流程中的步骤来使用它.使用S3DistCp,您可以有效地将大量数据从Amazon S3复制到HDFS,然后可以通过Amazon Elastic MapReduce(Amazon EMR)作业流程中的后续步骤进行处理.您还可以使用S3DistCp在Amazon S3存储桶之间或从HDFS到Amazon S3复制数据
示例将日志文件从Amazon S3复制到HDFS
以下示例说明如何将存储在Amazon S3存储桶中的日志文件复制到HDFS中.在此示例中, - srcPattern选项用于限制复制到守护程序日志的数据.
elastic-mapreduce --jobflow j-3GY8JC4179IOJ --jar \
s3://us-east-1.elasticmapreduce/libs/s3distcp/1.latest/s3distcp.jar \
--args '--src,s3://myawsbucket/logs/j-3GY8JC4179IOJ/node/,\
--dest,hdfs:///output,\
--srcPattern,.*daemons.*-hadoop-.*'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37671 次 |
| 最近记录: |