大資料之路 二 MapReduce

2021-09-12 22:28:50 字數 1266 閱讀 3681

mapreduce是一種分布式的計算框架,mapreduce由jobtracker和tasktracker組成。jobtracker負責資源管理和作業控制,tasktracker負責任務的執行。

程式會根據inputformat將輸入檔案分割成splits,每個split會作為乙個map task的輸入,每個map task會有乙個記憶體緩衝區,輸入資料經過map階段處理後的中間結果會寫入記憶體緩衝區,並且決定資料寫入到哪個partitioner,當寫入的資料到達記憶體緩衝區的的閥值(預設是0.8),會啟動乙個執行緒將記憶體中的資料溢寫入磁碟,同時不影響map中間結果繼續寫入緩衝區。在溢寫過程中,mapreduce框架會對key進行排序,如果中間結果比較大,會形成多個溢寫檔案,最後的緩衝區資料也會全部溢寫入磁碟形成乙個溢寫檔案(最少有乙個溢寫檔案),如果是多個溢寫檔案,則最後合併所有的溢寫檔案為乙個檔案。

reduce task

當所有的map task完成後,每個map task會形成乙個最終檔案,並且該檔案按區劃分。reduce任務啟動之前,乙個map task完成後,就會啟動執行緒來拉取map結果資料到相應的reduce task,不斷地合併資料,為reduce的資料輸入做準備,當所有的map tesk完成後,資料也拉取合併完畢後,reduce task 啟動,最終將輸出輸出結果存入hdfs上。

map端

split被送入map task後,程式庫決定資料結果資料屬於哪個partitioner,寫入到記憶體緩衝區,到達閥值,開啟溢寫過程,進行key排序,如果有combiner步驟,則會對相同的key做歸併處理,最終多個溢寫檔案合併為乙個檔案。

reduce端

多個map task形成的最終檔案的對應partitioner會被對應的reduce task拉取至記憶體緩衝區,對可能形成多個溢寫檔案合併,最終

作為resuce task的資料輸入 。

大資料之路 二 MapReduce流程詳細分析

最近有個任務就是處理上百g的日誌檔案,為了效率我們首先想到的是用hadoop,而hadoop框架中最重要的一 部分就是mapreduce,下面個人總結下mapreduce的流程 1 mapruduce file要處理得檔案 file儲存在hdfs上,切分成預設64m的block,儲存在多個datan...

大資料之Map reduce

大資料問題一般解決方式 利用雜湊函式進行分流來解決記憶體限制或者其他限制的問題。1.雜湊函式又叫雜湊函式,雜湊函式的輸入域可以是非常大的範圍,但是輸出域是固定範圍。假設為s。雜湊函式的性質 1.典型的雜湊函式都擁有無限的輸入值域。2.輸入值相同時 返回值一樣。3.輸入值不同時,返回值可能一樣,也可能...

大資料MapReduce總結

mapreduce定義 hadoop mapreduce是乙個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上tb級別的海量資料集。mapreduce主要思想 分久必合 mapreduce兩個階段 map...