Hadoop檔案壓縮格式分析和比較
Hadoop支援壓縮格式:
壓縮格式 |
可分割 |
演算法 |
副檔名 |
Linux工具 |
gzip |
否 |
DEFLATE |
.gz |
gzip |
lzo |
是(加索引) |
LZO |
.lzo |
lzop |
snappy |
否 |
Snappy |
.snappy |
無 |
Bzip2 |
是 |
Bzip2 |
.bz2 |
bzip2 |
deflate |
否 |
DEFLATE |
.deflate |
無 |
zip |
是 |
ZIP |
.zip |
zip |
1)Gzip壓縮
優點:壓縮率比較高,壓縮/解壓速度也比較快,hadoop本身支援。
缺點:不支援分片。
應用場景:當每個檔案壓縮之後在1個block塊大小內,可以考慮用gzip壓縮格式。
2)lzo壓縮
優點:壓縮/解壓速度也比較快,合理的壓縮率,支援分片,是Hadoop中最流行的壓縮格式,支援Hadoop native庫。
缺點:壓縮率比gzip要低一些,Hadoop本身不支援,需要安裝,如果支援分片需要建立索引,還需要指定inputformat改為lzo格式。
應用場景:一個很大的文字檔案,壓縮之後還大於200M以上的可以考慮,而且單個檔案越大,lzo優點越明顯。
3)snappy壓縮
優點:支援Hadoop native庫,高速壓縮速度和合理的壓縮率。
缺點:不支援分片,壓縮率比gzip要低,Hadoop本身不支援,需要安裝。
應用場景:當MapReduce作業的map輸出的資料比較大的時候,作為map到reduce的中間資料的壓縮格式。
4)bzip2壓縮
優點:支援分片,具有很高的壓縮率,比gzip壓縮率都高,Hadoop本身支援,但不支援native。
缺點:壓縮/解壓速度慢,不支援Hadoop native庫。
應用場景:適合對速度要求不高,但需要較高的壓縮率的時候,可以作為mapreduce作業的輸出格式,輸出之後的資料比較大,處理之後的資料需要壓縮存檔減少磁碟空間並且以後資料用得比較少的情況。
總結:壓縮比:bzip2 > gzip > lzo > snappy ,壓縮速度:snappy > lzo> gzip > bzip2