2017-02-05 1 views
1

私は10 GBのcsvファイルを持っており、Hadoop MapReduceで処理したいと思っています。 私は15のノード(データノード)クラスタを持っており、スループットを最大化したいと考えています。圧縮されたファイルVSは、mapreduceの非圧縮ファイルです。どちらが優れたパフォーマンスを与えるのですか?

どのような圧縮形式を使用しますか?またはテキストファイルを圧縮しないと、圧縮されたテキストファイルより常に良い結果が得られます。理由を説明してください。

私は圧縮されていないファイルを使用していました。それはなぜそうですか?

+0

あなたのデータによって異なります。一部のデータは非常にうまく圧縮でき、他のデータはほとんど圧縮できません。私はいくつかお試しいただき、あなたのデータに最適なものを見つけることをお勧めします。 –

答えて

0

スナッピー圧縮の問題点は、スプリットテーブルではないため、Hadoopは入力ファイルをチャンクに分割して入力用に複数のマッパーを実行できないことです。あなたの10Gbファイルは、単一のマッパーで処理される可能性が最も高いです(アプリケーション履歴UIで確認してください)。 hadoopは大きなファイルを別々のマシンの別々のブロックに保存するので、このファイルの一部はマッパーマシンにも存在せず、ネットワーク経由で転送する必要があります。これは、Snappy圧縮ファイルがプレーンテキストよりも遅く動作する主な理由と思われます。

問題を回避するには、bzip2圧縮を使用するか、ファイルを手動でチャンクに分割し、各パーツをスナップで圧縮します。

+0

あなたの説明をありがとう。はい、あなたは間違いなく圧縮を実行しているマッパです。ですから、テキストファイルのみでは分割できないスナップ圧縮は可能ですか?avro/orc/sequence/parquetがスナッピーで使用されている場合は分割することができますか?テキストファイルとコンテナファイル形式(Seq/avro/parquet/orcなど)で(LZO、gzipなど)のような他の圧縮コーデックについてはどうでしょうか。 ? –

+0

@AdityaAgarwal私はavroや寄木張りで仕事をしなかったので、それについては分かりません。私はLZOをプリスプリットするトリックがあり、gzipは分割不可能であることを知っています – AdamSkywalker

+0

Ok助けてくれてありがとう。 –

関連する問題