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 清洗冷...