Hadoop之資料壓縮

2021-09-27 08:43:11 字數 2254 閱讀 4263

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

可以在mapreduce的任意階段啟用壓縮。不過,但是它對效能的提公升和節省並非沒有代價–增加了cpu的負擔。

壓縮的基本原則

編解碼器

效能比較

根據上面的三個階段:

輸入階段:

reduce輸出階段:

6.1 資料流的壓縮和解壓縮

6.1.2 壓縮

傳進來的是普通的檔案,傳出去的是壓縮過的檔案

public static void main(string args) throws ioexception, classnotfoundexception 

private static void compress(string filename, string method) throws ioexception, classnotfoundexception

6.1.3 解壓傳入的壓縮過的資料流,傳出去的普通的資料流

public static void main(string args) throws ioexception 

private static void decompress(string filename) throws ioexception

//2.獲取輸入流

fileinputstream fileinputstream = new fileinputstream(new file(filename));

compressioninputstream coin = codec.createinputstream(fileinputstream);

//3.獲取輸出流

fileoutputstream fileoutputstream = new fileoutputstream(new file(filename + ".decode"));

//4.流的對拷

ioutils.copybytes(coin, fileoutputstream, 1024 * 1024, false);

//5.關閉資源

ioutils.closestream(fileoutputstream);

ioutils.closestream(coin);

ioutils.closestream(fileinputstream);

}

6.2 map輸出端採用壓縮

只需要在driver的部分增加下面兩行**即可:

執行一下可以發現,最後的結果和不壓縮的時候一樣的。

so,在map輸出階段進行壓縮是完全不會影響最後的結果的,只是提高了io傳輸的效率。

6.3 reduce輸出端採用壓縮

依舊是wordcount的例子,依舊只要在driver上增加兩行:

這時候輸出的檔案就變成壓縮的形式了

要注意:最終決定輸出的格式是reduce輸出時壓縮成的格式,和map階段的壓縮無關。

Hadoop 資料壓縮總結

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

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...