hadoop中的檔案壓縮

2021-09-26 03:49:11 字數 1825 閱讀 8552

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();

configuration.set("mapreduce.map.output.compress","true");

reduce的配置:

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各個壓...