2016-07-19 2 views
0

s3からHDFSに193 GBのデータをコピーしようとしています。私は、S3-distcpとHadoopのdistcpために、以下のコマンドを実行している:私はマスターノード上でこれらを実行しても転送されている量のチェックを維持していますEMRでs3-dist-cpとhadoop distcpジョブが無限ループする

s3-dist-cp --src s3a://PathToFile/file1 --dest hdfs:///user/hadoop/S3CopiedFiles/ 

hadoop distcp s3a://PathToFile/file1 hdfs:///user/hadoop/S3CopiedFiles/ 

。 約1時間かかってコピーした後、すべてが消去され、クラスタ内の4つのコアインスタンスにディスク容量が99.8%として表示され、hadoopジョブは永遠に実行されます。できるだけ早く私は、コマンドを実行するよう 、

16/07/18 18:43:55 INFO mapreduce.Job: map 0% reduce 0% 
16/07/18 18:44:02 INFO mapreduce.Job: map 100% reduce 0% 
16/07/18 18:44:08 INFO mapreduce.Job: map 100% reduce 14% 
16/07/18 18:44:11 INFO mapreduce.Job: map 100% reduce 29% 
16/07/18 18:44:13 INFO mapreduce.Job: map 100% reduce 86% 
16/07/18 18:44:18 INFO mapreduce.Job: map 100% reduce 100% 

これは時間のデータの上に印刷された直後に、その後のコピーを取得します。それはもう一度始まります。

16/07/18 19:52:45 INFO mapreduce.Job: map 0% reduce 0% 
16/07/18 18:52:53 INFO mapreduce.Job: map 100% reduce 0% 

ここに何かがありますか?どんな助けもありがとうございます。

また、ジョブが失敗してループしているかどうかをマスターノード上のログファイルで確認できますか? ありがとう

答えて

0

私の場合は、hdfsからs3に1つの大きな圧縮ファイルをコピーし、 hadoop distcpはs3-dist-cpよりはるかに高速です。

ログをチェックすると、マルチアップロードの部分は、減らすステップで非常に長い時間がかかります。 ブロック(134MB)をアップロードすると、s3-dist-cpの場合は20秒かかりますが、hadoop distcpの場合はわずか4秒かかります。

distcpはs3(デスティネーションファイルシステム)で一時ファイルを作成しますが、s3-dist-cpはhdfsで一時ファイルを作成します。

私はまだマルチアップロードのパフォーマンスがdistcpとs3-dist-cpと大きく異なる理由を調査していますが、良い見識を持ったものがここに寄稿できることを願っています。

0

調査のためにHadoop 2.8.0を選択し、s3a:// filesystemを使用すると、今収集するファイルシステムの統計情報をたくさん取得できます。

本当のパフォーマンスキラーはrename()です。これは、s3クライアントでコピーを実行してからdeleteを実行することによって模倣されます。distcpの実行中に名前の変更を伴うatomic distcpを実行しようとすると、 6-10MBのデータごとに2番目のアップロード後の遅延の16秒間の134MBは「名前が変更されました」となります