Amazon EMRクラスターの出力を圧縮する方法 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EMRクラスターの出力を圧縮する方法

データ処理から生じる出力を圧縮する方法はさまざまです。使用する圧縮ツールは、データのプロパティによって異なります。圧縮は、大量のデータを転送する際にパフォーマンスを向上させることができます。

出力データ圧縮

Hadoop ジョブの出力を圧縮します。を使用している場合 TextOutputFormat 、結果は gzip 形式のテキストファイルです。に書き込む場合 SequenceFiles 、結果は内部的に圧縮 SequenceFile される になります。これは、mapred.output.compress を true に設定することによって有効にできます。

ストリーミングジョブを実行している場合は、そのストリーミングジョブにこれらの引数を渡すことで有効にできます。

-jobconf mapred.output.compress=true

また、ブートストラップアクションを使用することによって自動的にすべてのジョブ出力を圧縮することもできます。ここでは、Ruby クライアントでこれを行う方法を示します。

--bootstrap-actions s3://elasticmapreduce/bootstrap-actions/configure-hadoop \ --args "-s,mapred.output.compress=true"

最後に、Custom Jar を作成している場合は、ジョブの作成時に次の行を使用して出力圧縮を有効にすることができます。

FileOutputFormat.setCompressOutput(conf, true);

中間データ圧縮

マッパーからリデューサーに大量のデータを移動するジョブでは、中間圧縮を行うことでパフォーマンスが大幅に向上することがあります。マップ出力を圧縮し、コアノードに到達したらそれを解凍します。設定は、mapred.compress.map.output で行います。これは、出力圧縮についても同様に有効にすることができます。

Custom Jar を作成している場合は、次のコマンドを使用します。

conf.setCompressMapOutput(true);

Amazon での Snappy ライブラリの使用 EMR

Snappy は高速圧縮/解凍ライブラリです。Amazon EMRAMIsバージョン 2.0 以降で使用でき、中間圧縮のデフォルトとして使用されます。Snappy の詳細については、http://code.google.com/p/snappy/ を参照してください。