分布式處理之 MapReduce

2021-10-02 20:43:53 字數 1577 閱讀 2916

mapreduce 是一種計算模型,簡單的說就是將大批量的工作(資料)分解(map)執行,然後再將結果合併成最終結果(reduce)。這樣做的好處是可以在任務被分解後,通過大量機器進行分布式平行計算,減少整個操作的時間。也就是說,mapreduce 的原理就是乙個歸併排序。

它的適用範圍為資料量大,但是資料種類小可以放入記憶體的場景。基本原理及要點是將資料交給不同的機器去處理,資料劃分,結果歸併。

mapreduce 模式的主要思想是將要執行的問題(如程式)自動拆分成 map(對映)和 reduce(化簡)的方式,其流程圖如圖 6-4 所示。

在資料被分割後通過 map 函式的程式將資料對映成不同的區塊,分配給計算機機群處理達到分布式運算的效果,在通過 reduce 函式的程式將結果彙整,從而輸出開發者需要的結果

mapreduce 借鑑了函式式程式語言的設計思想,其軟體實現是指定乙個 map 函式,把鍵值對(key/value)對映成新的鍵值對(key/value),形成一系列中間結果形式的 key/value 對,然後把它們傳給reduce(規約)函式,把具有相同中間形式 key/value 合併在一起。map 和 reduce 函式具有一定的關聯性。函式描述如表 6-1 所示:

mapreduce 致力於解決大規模資料處理的問題,因此在設計之初就考慮了資料的區域性性原理,利用區域性性原理將整個問題分而治之mapreduce 集群由普通 pc 機構成,為無共享式架構。在處理之前,將資料集分布至各個節點。處理時,每個節點就近讀取本地儲存的資料處理(map),將處理後的資料進行合併(combine)、排序(shuffle and sort )後再分發(至 reduce 節點),避免了大量資料的傳輸,提高了處理效率。無共享式架構的另乙個好處是配合複製(replication)策略,集群可以具有良好的容錯性,一部分節點的 down 機對集群的正常工作不會造成影響。

hadoop 是乙個實現了 mapreduce 模式的開源分布式並行程式設計框架。圖 6-5 是有關 hadoop 的作業調優參 數 及 原 理 , 左 邊 是 map 任 務 運 行 示 意 圖 , 右 邊 是 reduce 任 務 運 行 示 意 圖 。

如圖 2 所示,其中 map 階段,當 map 任務 開始運算, 並產生中間資料後並非直接而簡單的寫入磁碟它首先利用記憶體緩衝區來對已經產生的 buffer 進行快取,並在記憶體快取區 中進行一些預排序來優化整map 的效能。 而上圖右邊的 reduce 階段則經歷了三個階段,分別 copy->sort->reduce。我們能明顯地看出其中的 sort 是採用的歸併排序(merge sort)。

分布式計算框架MapReduce

mapreduce思想在生活中處處可見。或多或少都曾接觸過這種思想。mapreduce的思想核心是 分而治之 適用於大量複雜的任務處理場景 大規模資料處理場景 map負責 分 即把複雜的任務分解為若干個 簡單的任務 來並行處理。可以進行拆分的前提是這些小任務可以平行計算,可以提高並行度。彼此間幾乎沒...

MapReduce 分布式計算框架

mapreduce是分布式計算框架,它將大型資料操作作業分解為可以跨伺服器集群並行執行的單個任務,適用於大規模資料處理場景,每個job包含map和reduce兩部分 分而治之 簡化平行計算的程式設計模型 構建抽象模型 map和reduce 隱藏系統層細節 開發人員專注於業務邏輯實現 優點 缺點 ov...

分布式計算模型MapReduce

1 需求 統計乙個檔案中每乙個單詞出現的總次數。2 案例資料 3 編寫reducer類 public class wordcountreducer extends reducer v.set sum context.write key,v 4 編寫驅動類 public class wordcount...