hadoop之資料壓縮與資料格式

2022-03-15 02:09:11 字數 2958 閱讀 2426

a.資料壓縮

優點: 1.節省本地空間 2.節省頻寬

缺點: 花時間

1.mr中允許進行資料壓縮的地方有三個:

1)input起點  2)map處理之後  3)reduce處理之後進行儲存

2.壓縮格式

的型別。以下是它們的一些詳細引數:

壓縮比壓縮速率

解壓速率

gzip/deflate

13.4%

21mb/s

118mb/s

bzip2 

13.2%

2.4mb/s

9.5mb/s

lzo20.5%

135mb/s

410mb/s

22.2%

172mb/s

409mb/s

(本表資料**於部落格:  , 感謝玉羽凌風!)

3.mr中如何使用資料壓縮?

剛才談到了三個可以進行壓縮的地方,這裡分別說明:

1)輸入時,hadoop依據檔案格式進行自動識別並解壓,這個是自動的,不需要關心太多

2)在map之後有乙個可以壓縮的點,需要配置以下兩個引數進行壓縮:

mapreduce.map.output.compress  - false/true  - 在 map處理後是否啟用壓縮

mapreduce.map.output.compress.codec – 選擇編解碼器

3)在reduce之後有乙個可以壓縮的點,需要配置以下三個引數進行壓縮:

mapreduce.output.fileoutputformat.compress – false/true – 在 reduce後是否壓縮

mapreduce.output.fileoutputformat.compress.codc – 選擇編解碼器

mapreduce.output.fileoutputformat.compress.type – record/block/none  其中record是針對記錄的壓縮,block是針對塊的壓縮

其中使用record壓縮率比較低,因此一般使用block。

**注:hadoop支援的編解碼器 - 配置中需要用到:

zlib → org.apache.hadoop.io.compress.default.codec

其中zlib是mr使用的預設壓縮格式,當指定上面的bool值為true且沒有指定codec的情況下,預設使用這個codec

gzip → org.apache.hadoop.io.compress.gzipcodec

bzip2 → org.apache.hadoop.io.compress.bzip2codec

lzo → com.hadoop.compression.lzo.lzocodec

lz4 → org.apache.hadoop.io.coompress.lz4codec

其他關於壓縮問題的補充:  

4.hive中如何使用資料壓縮?

(注:本圖引自北風網)

1)input處的資料壓縮,需要在建立表的時候指定 

2)map之後的資料壓縮需要設定三個引數:

hive.exec.compress.intermediate - true 

mapred.map.output.compress.codec – 選擇編解碼器

mapred.map.output.compress.codec - record/block

3)reduce之後的資料壓縮需要設定三個引數:

hive.exec.compress.output - true

mapred.output.compression.codec - 編解壓器

mapred.output.compression.type - record/block

b.資料儲存格式

在建立hive表的時候,我們可以用stored as關鍵字來指定資料儲存格式。

hadoop支援的常見的儲存格式有以下幾種:

1.hadoop支援的檔案儲存格式,比較典型的有(需要記住):

* 按行儲存

sequencefile textfile

* 按列儲存

rcfile orc parquet

2.行式儲存與列式儲存的比較

1)列式儲存每一列單獨摘出來存放,行式儲存按行存放。

這就導致行式儲存進行查詢時,需要把每一行完整的讀進去。而列式儲存只需要找到指定的幾行,讀這幾行就可以。

2)因此列式儲存不適用於更新多,整表查詢的場景,適用於只查詢不更新,並且查詢主要集中於某幾列的場景。因此其常用於olap業務。

行式儲存在只查詢幾列資料的時候,效能不如列式 儲存。但是它靈活可以變動,適用於修改、實時互動的場景。因此常用於oltp業務。

* 注意:hbase 的「列式資料庫」是指資料的邏輯模型是支援列可擴充套件的,而實際的儲存模型是json實現的行式儲存。

企業裡用的比較多的列式壓縮式orc以及apache的parquet.

在上圖中,我們可以看到不同儲存格式,占用的儲存空間不同。

3.orcfile的儲存格式

感謝 !

4.parquet儲存格式

todo

Hadoop之資料壓縮

壓縮技術能夠有效的減少底層儲存系統 hdfs 讀寫位元組數。壓縮提高了網路頻寬和磁碟空間的效率。在執行mr程式時,i o操作 網路資料傳輸 shuffle和merge要花大量時間,有其是資料規模很大和工作負載密集的情況下,因此,使用資料壓縮顯得非常重要。可以在mapreduce的任意階段啟用壓縮。不...

Hadoop 資料壓縮總結

壓縮技術能夠有效減少底層儲存系統 hdfs 讀寫位元組數。壓縮提高了網路頻寬和磁碟空間的效率。在hadoop下,尤其是資料規模很大和工作負載密集的情況下,使用資料壓縮顯得非常重要。在這種情況下,i o操作和網路資料傳輸要花大量的時間。還有,shuffle與merge過程同樣也面臨著巨大的i o壓力。...

資料壓縮與資訊熵

1992年,美國喬治亞州的web technology公司,宣布做出了重大的技術突破。該公司的datafiles 16軟體,號稱可以將任意大於64kb的檔案,壓縮為原始大小的16分之一。業界議論紛紛,如果訊息屬實,無異於壓縮技術的革命。許多專家還沒有看到軟體,就斷言這是不可能的。因為根據壓縮原理,你...