Hadoop 資料壓縮總結

2021-10-04 21:48:55 字數 2402 閱讀 1738

壓縮技術能夠有效減少底層儲存系統(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...