壓縮技術能夠有效減少底層儲存系統(hdfs)讀寫位元組數。壓縮提高了網路頻寬和磁碟空間的效率。在hadoop下,尤其是資料規模很大和工作負載密集的情況下,使用資料壓縮顯得非常重要。在這種情況下,i/o操作和網路資料傳輸要花大量的時間。還有,shuffle與merge過程同樣也面臨著巨大的i/o壓力。
鑑於磁碟i/o和網路頻寬是hadoop的寶貴資源,資料壓縮對於節省資源、最小化磁碟i/o和網路傳輸非常有幫助。不過,儘管壓縮與解壓操作的cpu開銷不高,其效能的提公升和資源的節省並非沒有代價。
如果磁碟i/o和網路頻寬影響了mapreduce作業效能,在任意mapreduce階段啟用壓縮都可以改善端到端處理時間並減少i/o和網路流量。
注意:壓縮特性運用得當能提高效能,但運用不當也可能降低效能。
基本原則:
(1)運算密集型的job,少用壓縮
(2)io密集型的job,多用壓縮
壓縮格式
hadoop自帶?
演算法副檔名
是否可切分
換成壓縮格式後,原來的程式是否需要修改
default
是,直接使用
default
.deflate
否和文字處理一樣,不需要修改
gzip
是,直接使用
default
.gz否
和文字處理一樣,不需要修改
bzip2
是,直接使用
bzip2
.bz2
是和文字處理一樣,不需要修改
lzo否,需要安裝
lzo.lzo
是需要建索引,還需要指定輸入格式
否,需要安裝
否和文字處理一樣,不需要修改
為了支援多種壓縮/解壓縮演算法,hadoop引入了編碼/解碼器,如下表所示
壓縮格式
對應的編碼/解碼器
deflate
org.apache.hadoop.io.compress.defaultcodec
gzip
org.apache.hadoop.io.compress.gzipcodec
bzip2
org.apache.hadoop.io.compress.bzip2codec
lzocom.hadoop.compression.lzo.lzopcodec
壓縮效能的比較
壓縮演算法
原始檔案大小
壓縮檔案大小
壓縮速度
解壓速度
gzip
8.3gb
1.8gb
17.5mb/s
58mb/s
bzip2
8.3gb
1.1gb
2.4mb/s
9.5mb/s
lzo8.3gb
2.9gb
49.3mb/s
74.6mb/s
壓縮可以在mapreduce作用的任意階段啟用。
要在hadoop中啟用壓縮,可以配置如下引數:
引數預設值
階段建議
io.compression.codecs (在core-site.xml中配置)
org.apache.hadoop.io.compress.defaultcodec, org.apache.hadoop.io.compress.gzipcodec, org.apache.hadoop.io.compress.bzip2codec
輸入壓縮
hadoop使用副檔名判斷是否支援某種編解碼器
mapreduce.map.output.compress(在mapred-site.xml中配置)
false
這個引數設為true啟用壓縮
mapreduce.map.output.compress.codec(在mapred-site.xml中配置)
org.apache.hadoop.io.compress.defaultcodec
mapreduce.output.fileoutputformat.compress(在mapred-site.xml中配置)
false
reducer輸出
這個引數設為true啟用壓縮
mapreduce.output.fileoutputformat.compress.codec(在mapred-site.xml中配置)
org.apache.hadoop.io.compress. defaultcodec
reducer輸出
使用標準工具或者編解碼器,如gzip和bzip2
mapreduce.output.fileoutputformat.compress.type(在mapred-site.xml中配置)
record
reducer輸出
sequencefile輸出使用的壓縮型別:none和block
Hadoop之資料壓縮
壓縮技術能夠有效的減少底層儲存系統 hdfs 讀寫位元組數。壓縮提高了網路頻寬和磁碟空間的效率。在執行mr程式時,i o操作 網路資料傳輸 shuffle和merge要花大量時間,有其是資料規模很大和工作負載密集的情況下,因此,使用資料壓縮顯得非常重要。可以在mapreduce的任意階段啟用壓縮。不...
hadoop之資料壓縮與資料格式
a.資料壓縮 優點 1.節省本地空間 2.節省頻寬 缺點 花時間 1.mr中允許進行資料壓縮的地方有三個 1 input起點 2 map處理之後 3 reduce處理之後進行儲存 2.壓縮格式 的型別。以下是它們的一些詳細引數 壓縮比壓縮速率 解壓速率 gzip deflate 13.4 21mb ...
ASIHTTPRequest 資料壓縮
從0.9版本開始,asihttprequest會提示伺服器它可以接收gzip壓縮過的資料。apache 2.x以上版本已經配備了mod deflate擴充套件,這使得apache可以透明地壓縮特定種類的資料。要開啟這個特性,你需要在apache的配置檔案中啟用mod deflate。並將mod de...