用Hadoop DistCp使用由HDFS到Amazon S3问题 [英] Problems with Hadoop distcp from HDFS to Amazon S3

查看:622
本文介绍了用Hadoop DistCp使用由HDFS到Amazon S3问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从HDFS移动数据使用 DistCp使用至S3。该 DistCp使用的工作似乎取得成功,但在S3上的文件都不会被正确创建。这里有两个问题:

  1. 在文件名和路径不被复制。所有文件最终成为 block_<有的数量和GT; 在叶片的根部
  2. 在它创造一大堆的一些元数据和日志在S3上额外的文件。

我找不到任何文档/例子这一点。我在想什么?如何调试?

下面是一些更多的细节:

  $的Hadoop版本
Hadoop的0.20.2-cdh3u0
颠覆-r
在Sun 5月1日15时42分11秒PDT 2011编译由Diego
从源校验
Hadoop的FS -ls HDFS:// hadoopmaster /数据/ paramesh /
...<一批文件制造> ...

Hadoop的HDFS DistCp使用:// hadoopmaster /数据/ paramesh / S3://< ID>:<键> @ paramesh测试/
$ ./s3cmd-1.1.0-beta3/s3cmd LS S3:// paramesh测试

                       DIR S3:// paramesh测试//
                       DIR S3:// paramesh测试/检验/
2012年5月10号2点20 0 S3:// paramesh测试/ block_-1067032400066050484
2012-05-10 02:20 8953 S3:// paramesh测试/ block_-183772151151054731
2012-05-10 02:20 11209 S3:// paramesh测试/ block_-2049242382445148749
2012-05-10 01:40 1916年S3:// paramesh测试/ block_-5404926129840434651
2012年5月10号1时40 8953 S3:// paramesh测试/ block_-6515202635859543492
2012年5月10号2点20 48051 S3:// paramesh测试/ block_1132982570595970987
2012年5月10号1时40 48052 S3:// paramesh测试/ block_3632190765594848890
2012年5月10号2点20 1160 S3:// paramesh测试/ block_363439138801598558
2012年5月10号1时40 1160 S3:// paramesh测试/ block_3786390805575657892
2012年5月10号1时40 11876 S3:// paramesh测试/ block_4393980661686993969
 

解决方案

您应该使用,而不是S3 S3N。

S3N是本机文件系统实现。(即 - 常规文件),对文件使用S3强加HDFS块结构,所以你不能真正读懂它们,而无需通过HDFS库

这样:

  Hadoop的HDFS DistCp使用://文件/ 1 S3N://桶/目标
 

I am trying to move data from HDFS to S3 using distcp. The distcp job seems to succeed, but on S3 the files are not being created correctly. There are two issues:

  1. The file names and paths are not replicated. All files end up as block_<some number> at the root of the bucket.
  2. It creates bunch of extra files on S3 with some meta data and logs.

I could not find any documentation/examples for this. What am I missing? How can I debug?

Here are some more details:

$ 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

解决方案

You should use s3n instead of s3.

s3n is the native file system implementation (ie - regular files), using s3 imposes hdfs block structure on the files so you can't really read them without going through hdfs libraries.

Thus:

hadoop distcp hdfs://file/1 s3n://bucket/destination

这篇关于用Hadoop DistCp使用由HDFS到Amazon S3问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆