1 減少磁碟的儲存空間
2 減少磁碟io和網路io
3 加快資料傳輸速度(磁碟和網路),如果小檔案多明顯檔案傳輸會明顯降低
1 考慮檔案的壓縮效率------》壓縮快慢
2 考慮檔案的壓縮比----------》解壓快慢
第一點好理解,壓縮的快肯定好
第二點是壓縮比,舉例現在有乙個10g的檔案,一種壓縮演算法能把他壓縮成1g,其他壓縮演算法能把他壓縮成3到6g,不能看到壓縮到1g的就是最好的。壓縮的檔案如果需要使用的,使用的一定需要先解壓,壓縮比這麼高,解壓的時候就會把cpu拉的特別高,解壓也會很慢,所以還要考慮檔案的解壓速度,伺服器的cpu能不能支援。
壓縮有兩種:無失真壓縮(lossless compression) 和 有失真壓縮 (lossy compression),從英文名上應該更準確一些。
無失真壓縮一般適用於對資料要求比較高,不允許丟失的場景,我們的大資料選這種;
壓縮工具
演算法檔案字尾
支援分割
優點缺點
gzip
gzip
default
.gz否
解壓縮速度較好,系統支援好
不支援split
bzip
bzip
bzip2
.bz2
是壓縮比高
解壓縮慢
lzolzo
lzo.lzo
是解壓縮快
壓縮率相比較低
lz4lz4
lz4.lz4
否解壓縮速度快
壓縮比低,不支援split
n/a否
解壓縮最快,支援hadoop native庫
壓縮比最低,需要重新編譯hadoop,不支援split
hadoop 是不自帶snapy的壓縮的,需要重新編譯hadoop。
編譯成功後,工程中如果想使用snapy壓縮方式的話有以下兩種方法:
方法1 全域性的配置 全部節點的mapred-site.xml配置
mapreduce.map.output.compress
true
mapreduce.map.output.compress.codec
mapreduce.output.fileoutputformat.compress
true
mapreduce.output.fileoutputformat.compress.type
record
mapreduce.output.fileoutputformat.compress.codec
配置修改完一定要重新重啟集群
第2種 在**中配置,可在run方法中配置 map 和reduce 都要配置
map的配置:
configuration configuration = new configuration();reduce的配置:configuration.set("mapreduce.map.output.compress","true");
configuration.set("mapreduce.output.fileoutputformat.compress","true");推薦使用第二種配置,因為有些檔案不需要壓縮,在全域性配置檔案的配置可能並不需configuration.set("mapreduce.output.fileoutputformat.compress.type","record");
Hadoop中的壓縮和解壓縮
壓縮就是通過某種演算法,將原始的檔案變下,使原始的檔案變小。解壓就是將壓縮後的檔案變成原始檔案的過程。1.hadoop當中哪些過程需要用到壓縮和解壓?map端 壓縮後的原始檔案首先切成塊,然後再解壓作為輸入檔案輸入給map端,等map端將資料處理完成後然後再壓縮,放在硬碟中。shuffle過程 壓縮...
hadoop壓縮彙總
可以減少對集群磁碟空間的占用,減小平行計算資料傳輸時網路io 1.1安裝lzo 2.06.tar.gz 1.2步驟 解壓 進入lzo 2.06.目錄 configure make make install 1.3報錯處理 yum install gcc c 1.5然後利用hadoop 的編譯環境,進...
Hadoop壓縮格式
hadoop的常用壓縮格式 壓縮格式 可分割演算法 副檔名linux工具 gzip 否deflate gzgzip lzo是 加索引 lzo.lzo lzop否無 bzip2 是bzip2 bz2 bzip2 deflate 否deflate deflate 無zip 是zip zip zip各個壓...