我正在尝试使用以下方法将数据从 HDFS 移动到 S3distcp
. The distcp
作业似乎成功了,但在 S3 上,文件未正确创建。有两个问题:
- 文件名和路径不会被复制。所有文件最终都为
block_<some number>
在桶的根部。
- 它在 S3 上创建了一堆额外的文件,其中包含一些元数据和日志。
我找不到这方面的任何文档/示例。我缺少什么?我该如何调试?
以下是更多详细信息:
$ hadoop version
Hadoop 0.20.2-cdh3u0
Subversion -r
Compiled by diego on Sun May 1 15:42:11 PDT 2011
From source with checksum
hadoop fs –ls hdfs://hadoopmaster/data/paramesh/
…<bunch of files>…
hadoop distcp hdfs://hadoopmaster/data/paramesh/ s3://<id>:<key>@paramesh-test/
$ ./s3cmd-1.1.0-beta3/s3cmd ls s3://paramesh-test
DIR s3://paramesh-test//
DIR s3://paramesh-test/test/
2012-05-10 02:20 0 s3://paramesh-test/block_-1067032400066050484
2012-05-10 02:20 8953 s3://paramesh-test/block_-183772151151054731
2012-05-10 02:20 11209 s3://paramesh-test/block_-2049242382445148749
2012-05-10 01:40 1916 s3://paramesh-test/block_-5404926129840434651
2012-05-10 01:40 8953 s3://paramesh-test/block_-6515202635859543492
2012-05-10 02:20 48051 s3://paramesh-test/block_1132982570595970987
2012-05-10 01:40 48052 s3://paramesh-test/block_3632190765594848890
2012-05-10 02:20 1160 s3://paramesh-test/block_363439138801598558
2012-05-10 01:40 1160 s3://paramesh-test/block_3786390805575657892
2012-05-10 01:40 11876 s3://paramesh-test/block_4393980661686993969
您应该使用 s3n 而不是 s3。
s3n 是本机文件系统实现(即常规文件),使用 s3 在文件上强加 hdfs 块结构,因此如果不通过 hdfs 库就无法真正读取它们。
Thus:
hadoop distcp hdfs://file/1 s3n://bucket/destination
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)