いつ使うべきか、使わないべき
FileOutputFormat.setCompressOutput(conf, true);
か?
マッパー出力を圧縮すると聞きました。レデューサー側の出力を圧縮する可能性はありますか?
(私の仮定が間違っている場合は、マッパー出力とリデューサー出力を圧縮する方法を教えてください!)
レデューサー出力のmapred.output.compress
圧縮は で、マッパー出力の圧縮はで制御できmapred.compress.map.output
ます。これらの構成キーは、サイト全体の構成ファイル、ジョブのセットアップ、またはジョブの実行時に Hadoop に渡されるオプションとして (true
またはに) 設定できます。false
-D
通常、マップ出力を圧縮することをお勧めします。出力が最終結果ではない場合、たとえば、前のジョブの出力に対して別のジョブを実行している場合など、reduce 出力を圧縮します。
圧縮は I/O の量を大幅に減らすことができるため、多くの場合、(圧縮/圧縮解除のために余分な処理が必要ですが) ジョブをより速く終了させるのに役立ちます。
圧縮コーデックも選択できます。LZO を使用します。LZO は Hadoop には付属していませんが、次の場所にあります。
https://github.com/kevinweil/hadoop-lzo
LZO は、最小限の CPU オーバーヘッドでかなり適切に圧縮します。Bzip2 は非常によく圧縮されますが、オーバーヘッドが大きくなります。gzip は圧縮率が低く、オーバーヘッドが中程度です。(あくまで一般論です。) LZOが一番特性のバランスが取れていると思います。