在企業實習的過程中,有學習到hadoop,師傅也需要我們講解mapreduce過程原理。我就把我的理解分享以下。
mr(分布式計算模型)分為2個部分map,reduce。
1. map 過程。
1.1 從hdfs讀取資料,預設一行產生一對.
1.2 每次接受到一對,呼叫一次map()方法進行計算,產生新的一對,呼叫prattioner(),計算key的hash值然後根據reduce task數量取模計算,最後將及parttion值放置緩衝區中。.
1.4 當緩衝區資料達到80%時,啟動spilt(溢寫)。將資料刷入至硬碟當中。產生乙個溢寫檔案。在溢寫時,會對內容進行排序(對序列化的位元組做的排序,根據不同的傳送到不同端的reduce,減少parttion索引記錄)
(之所以設定80%預設,方便將資料刷入硬碟的時候,任然可以接受map產生的結果)
(分割槽->排序->combine)
1.5 當資料量很大的時候,會產生多個溢寫檔案,在map task完成時,會進行merge,合併為乙個檔案。
2.reduce過程
2.1 merge階段,類似map階段的merge,將來自不同map端的資料進行整合。copy過來的數值首先放到記憶體緩衝區中。merge主要方式為從記憶體到磁碟,與map的溢寫類似,如果在此過程中設定了combiner,也是會啟用的。產生眾多的溢寫檔案。直到map端沒有資料結束。然後進行磁碟到磁碟的merge方式生成最終的檔案。
2.2最終檔案成為combine的輸入檔案,進行reduce運算。產生結果
2.3.將產生的結果輸出到hdfs上。
推薦
hadoop批量計算框架 MapReduce
結合自身的經驗記錄,mapreduce中的一些知識點以及乙個wordcount小實踐 核心思想 分而治之 map程式 需要根據自己的需求開發 shuffle 緩衝區大小設定 core site.xml設定為100m io.file.buffer.size 100000000 以位元組為單位 hdfs...
Hadoop的分布式計算 MapReduce
什麼是mapreduce?你想數出一摞牌中有多少張黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。mapreduce方法則是 1.給在座的所有玩家中分配這摞牌 2.讓每個玩家數自己手中的牌有幾張是黑桃,然後把這個數目匯報給你 3.你把所有玩家告訴你的數字加起來,得到最後的結論 1 mapredu...
Hadoop基本原理之一 MapReduce
1 為什麼需要hadoop 目前,一塊硬碟容量約為1tb,讀取速度約為100m s,因此完成一塊硬碟的讀取需時約2.5小時 寫入時間更長 若把資料放在同一硬碟上,且全部資料均需要同乙個程式進行處理,此程式的處理時間將主要浪費在i o時間上。在過去幾十年,硬碟的讀取速度並未明顯增長,而網路傳輸速度此飛...