MapReduce之mapTask階段詳解

2021-10-02 09:37:29 字數 547 閱讀 8020

整個map階段流程大體如上圖所示。

簡單概述:inputfile通過split被邏輯切分為多個split檔案,通過record按行讀取內容給 map(使用者自己實現的)進行處理,資料被map處理結束之後交給outputcollector收集 器,對其結果key進行分割槽(預設使用hash分割槽),然後寫入buffer,每個map task都有 乙個記憶體緩衝區,儲存著map的輸出結果,當緩衝區快滿的時候需要將緩衝區的資料以一 個臨時檔案的方式存放到磁碟,當整個map task結束後再對磁碟中這個map task產生的所 有臨時檔案做合併,生成最終的正式輸出檔案,然後等待reduce task來拉資料

詳細步驟

1. 讀取資料元件 inputformat (預設 textinputformat) 會通過 getsplits 方法對輸入 目錄中檔案進行邏輯切片規劃得到 splits, 有多少個 split 就對應啟動多少個 maptask . split 與 block 的對應關係預設是一對一

大資料之Map reduce

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

MapReduce之Partition的使用與分析

partition主要作用就是將map的結果傳送到相應的reduce。這就對partition有兩個要求 1 均衡負載,盡量的將工作均勻的分配給不同的reduce。2 效率,分配速度一定要快。mapreduce預設的partitioner是hashpartitioner。除了這個mapreduce還...

Hadoop之MapReduce程式開發流程

對於乙個資料處理問題,若需要mapreduce,那麼如何設計和實現?mapreduce程式基礎模板,包含兩個部分,乙個是map,乙個是reduce。map和reduce的設計取決解決問題的演算法思路 而map和reduce的執行需要作業的排程。因此,mapreduce程式開發可以遵循以下流程。第一步...