壓縮 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"

最後一項,若寫入的是自訂的 Jar,則可以在建立任務時,以下列這行啟用輸出壓縮。

FileOutputFormat.setCompressOutput(conf, true);

中繼資料壓縮

若您的任務會從映射器將大量資料隨機播放到縮減器,啟用中繼資料壓縮可大幅改善效能。可壓縮映射輸出,在資料抵達核心節點時再解壓縮。組態設定為 mapred.compress.map.output。啟用方式與輸出壓縮類似。

若寫入的是自訂的 Jar,請使用以下命令:

conf.setCompressMapOutput(true);

將 Snappy 程式庫與 Amazon EMR 搭配使用

Snappy 是針對速度最佳化處理的壓縮與解壓縮程式庫。Amazon EMR AMI 2.0 版及更新版本均有提供,且是中繼壓縮的預設方式。如需 Snappy 的詳細資訊,請至 http://code.google.com/p/snappy/