MapReduce 2 0應用場景 原理與基本架構

2021-07-14 10:54:26 字數 1596 閱讀 6723

現介紹計算框架mapreduce。mapreduce乙個應用場景是有大量檔案,裡面儲存了單詞, 且乙個單詞佔一行 。執行任務是如何統計每個單詞出現的次數? 類似應用場景有搜尋引擎中,統計最流行的k個搜尋詞以及統計搜尋詞頻率,幫助優化搜尋詞提示 。

mapreduce將作業的整個執行過程分為兩個階段 :map階段和reduce階段 

map階段由一定數量的map task組成 :

(1)、輸入資料格式解析:inputformat; 

(3)、資料分組:partitioner 。

reduce階段由一定數量的reduce task組成 :

(1)、資料遠端拷貝 ;

(2)、資料按照key排序; 

(3)、資料處理:reducer; 

(4)、資料輸出格式:outputformat。 

mapreduce的內部邏輯如上圖所示。inputformat從hdfs上讀取split進行解析,然後輸出給maptask。map階段的輸出寫在磁碟上。partitioner階段將不同的map結果合理的分配到相應的reducetask。最後,通過outputformat將結果寫到hdfs上。

inputformat有很多繼承類,實現將分片資料解析成key/value對。dbinputformat用來讀取資料庫,fileinputformat用來讀取各種檔案形式。還有一種空檔案讀取方式emptyinputformat。split和block是兩個不同的概念。spilt是mapreduce中最小的計算單元。而block是hdfs儲存的最小儲存單元。其一一對應,都可以由使用者任意指定。

上圖所示為combiner的作用,conbiner相當於乙個本地的reducer操作。將相同key的map結果進行歸併。在wordcount操作中conbainer可以將同乙個map輸出的相同word進行統計。partitioner決定了map task輸出的每條資料 交給哪個reduce task處理。 預設實現是hash(key) mod r 。其中,r是reduce task數目,允許使用者自定義。很多情況需自定義partitioner,比如「hash(hostname(url)) mod r」確保相同域 名的網頁交給同乙個reduce task處理 。

在任務執行過程中,應該保證資料的本地性。當不能同節點訪問資料時,則會進行跨節點訪問,減慢執行速度,增加網路傳輸負載。甚至跨機架訪問資料延時會更嚴重。mapreduce的應用場景包括:簡單的資料統計,比如**pv、uv統計、搜尋引擎建索引、海量資料查詢、複雜資料分析演算法實現。例如:聚類演算法 、分類演算法、推薦演算法以及圖演算法。 

MapReduce2 0 原理 架構 應用場景

良好的擴充套件性,即可以很容易的增加節點 適合pb級別的資料的離線處理 map階段 輸入資料的解析 inputformat 輸入分組 partitioner 本節點的規約 combiner reduce階段 shuffling階段拉取資料 桶排序,是乙個hash過程,使得相同的key可以排在一堆 資...

MapReduce的應用場景

mapreduce的典型應用場景中,目前日誌分析用的比較多,還有做搜素的索引,機器學習演算法包mahout也是之一,當然它能做的東西還有很多,比如 資料探勘 資訊提取。mapreduce得到廣泛的應用,主要集中在分布排序 web連線圖反轉和web訪問日誌分析。google建立了基於mapreduce...

MapReduce2 0原理及基本架構

mapreduce是hadoop核心框架之一,我們知道hadoop是又分布式檔案系統hdfs和分布式計算框架組成。mapreduce就是一種離線資料計算框架。那麼作為計算機框架的套路,會有輸入經過處理後輸出結構,mapreduce就是將任務分為兩個階段 map階段和reduce階段。每個階段都是用鍵...