壓縮 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 2EMRAMIs.0 版及更新版本,並用作中繼壓縮的預設值。如需 Snappy 的詳細資訊,請至 http://code.google.com/p/snappy/