MapReduce shuffle過程及壓縮機制

2021-08-28 07:22:31 字數 2773 閱讀 4760

map階段處理的資料如何傳遞給reduce階段,是mapreduce框架中最關鍵的乙個流程,這個流程就叫shuffle。

shuffle: ——核心機制:資料分割槽,排序,規約,分組,合併等過程。

shuffle是mapreduce的核心,它分布在mapreduce的map階段和reduce階段。

一般把從map產生輸出開始到reduce取得資料作為輸入之前的過程稱作shuffle。

collect階段:將maptask的結果輸出到預設大小為100m的環形緩衝區,儲存的是key/value,partition分割槽資訊等。

spill階段:當記憶體中的資料量達到一定的閥值的時候,就會將資料寫入本地磁碟,在將資料寫入磁碟之前需要對資料進行一次排序的操作,如果配置了combiner,還會將有相同分割槽號和key的資料進行排序。

merge階段:把所有溢位的臨時檔案進行一次合併操作,以確保乙個maptask最終只產生乙個中間資料檔案。

copy階段:reducetask啟動fetcher執行緒到已經完成maptask的節點上覆制乙份屬於自己的資料,這些資料缺省會儲存在記憶體的緩衝區中,當記憶體的緩衝區達到一定的閥值的時候,就會將資料寫到磁碟之上。

merge階段:在reducetask遠端複製資料的同時,會在後台開啟兩個執行緒對記憶體到本地的資料檔案進行合併操作。

sort階段:在對資料進行合併的同時,會進行排序操作,由於maptask階段已經對資料進行了區域性的排序,reducetask只需保證copy的資料的最終整體有效性即可。

shuffle中的緩衝區大小會影響到mapreduce程式的執行效率,原則上說,緩衝區越大,磁碟io的次數越少,執行速度就越快.

在shuffle階段,資料有大量的拷貝過程。從map階段輸出的資料,都要通過網路拷貝,傳送到reduce階段,這一過程中,會涉及到大量的網路io,因此乙個好的壓縮機制,會大大減少資料的傳送量。

hadoop當中支援的壓縮演算法

檔案壓縮的好處:節約磁碟空間,加速資料在網路和磁碟上的傳輸。

使用bin/hadoop checknative來檢視我們編譯之後的hadoop支援的各種壓縮。

編譯後的cdh版本hadoop支援的壓縮演算法:

常見的壓縮速率比較

如何開啟我們的壓縮:

方式一:在**中進行設定壓縮

設定我們的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");

方式二:配置全域性的mapreduce壓縮

修改mapred-site.xml配置檔案,對所有的mapreduce任務進行壓縮

對map輸出資料壓縮:

mapreduce.map.output.compress

true

mapreduce.map.output.compress.codec

對reduce輸出資料進行壓縮:

mapreduce.output.fileoutputformat.compress

true

mapreduce.output.fileoutputformat.compress.type

record

mapreduce.output.fileoutputformat.compress.codec

注意:所有節點都要修改mapred-site.xml 的配置檔案,並在完成之後重啟hadoop集群.

**中新增配置

這裡我們通過修改**的方式來實現資料的壓縮

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

重新打包測試mr程式

美大學研究壓縮機CPU冷卻技術(ZT)

傳統的計算機冷卻系統大多基於散熱器與空氣對流帶走熱量,而美國普渡大學機械工程系的研究人員們,則在研究使用壓縮機冷卻的新cpu冷卻技術。普渡大學的研究小組主要著眼於設計微型壓縮機和蒸發器技術,研究人員現在已經開發出了一種微型壓縮機分析模型。這一模型將主要被用來驗證實驗資料。據機械工程系的garimel...

空氣壓縮機調節氣壓方法

本人研究軟體機械人,矽膠橡膠類材料是離不開的,然而,用這些材料乙個很大的問題就是脫泡,一般來說,都是用的真空幫浦,但是實驗室目前沒有,所以我用兩台空壓機一起抽真空 加真空閥,真空桶上的兩個口都接空壓機 這是第一點。第二點 抽真空最好用大流量幫浦帶小真空桶,這樣抽真空快 因為矽橡膠操作時間極短 苦於實...

解決活塞壓縮機(半封閉)系統常見故障解析

解決活塞壓縮機 半封閉 系統常見故障解析 一 排氣壓力過高 故障危害 壓縮機過熱,磨損加劇 製冷量下降,功耗增加。故障原因 1 系統中有不凝性氣體 2 冷卻水不足或水溫過高 3 冷凝器積垢太厚 水冷 冷凝器積灰太多 風冷 4 製冷劑充注過多 解決措施 1 放空氣 2 增加供水量,降低水溫 3 清洗冷...