9

を使用して HDFS から S3 にデータを移動しようとしていdistcpます。distcpジョブは成功したように見えますが、S3 ではファイルが正しく作成されていません。2 つの問題があります。

  1. ファイル名とパスは複製されません。すべてのファイルは、最終block_<some number>的にバケットのルートになります。
  2. いくつかのメタデータとログを使用して、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/
…&lt;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
4

4 に答える 4

15

s3 の代わりに s3n を使用する必要があります。

s3n はネイティブ ファイル システムの実装 (つまり、通常のファイル) です。s3 を使用すると、ファイルに hdfs ブロック構造が課せられるため、hdfs ライブラリを経由しないと実際にはファイルを読み取ることができません。

したがって:

hadoop distcp hdfs://file/1 s3n://bucket/destination
于 2012-05-10T23:19:14.117 に答える
3

Amazon は、hdfs と s3 の間の転送用に最適化されたバージョンの distcp を作成しました。これは、適切に s3distcp と呼ばれています。あなたもそれをチェックしたいかもしれません。これは Amazon EMR での使用を意図していますが、jar は s3 で使用できるため、EMR ジョブ フローの外部で使用できる可能性があります。

http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html

于 2012-05-25T06:34:20.877 に答える
2

これを Apache Hadoop 2.7+ 用に更新し、Amazon EMR が変更されたため無視します。

  1. Hadoop 2.7 以降を使用している場合は、s3n よりも s3a を使用してください。これは、HDPの最近のバージョンと、AFAIK、CDHにも当てはまります。
  2. これは 5 GB 以上のファイルをサポートし、他にも優れた機能を備えています。ファイルを読み取るときは明らかに改善されています。
  3. Apache s3:// は非推奨と見なす必要があります。もう必要ないため、使用しないでください。
  4. Amazon EMR は、「s3://」を使用して、S3 への独自のカスタム バインディングを参照します。EMR で実行している場合は、これを使用する必要があります。

distcp の信頼性とオブジェクト ストアを使用したパフォーマンスの向上は、現在も進行中の作業です...貢献は、いつものように歓迎されます。

于 2016-09-02T12:50:26.450 に答える