分布式計算框架MapReduce

2021-10-08 22:53:26 字數 1543 閱讀 8864

mapreduce思想在生活中處處可見。或多或少都曾接觸過這種思想。mapreduce的思想核心是「分而治之」,適用於大量複雜的任務處理場景(大規模資料處理場景)。

map負責「分」,即把複雜的任務分解為若干個「簡單的任務」來並行處理。可以進行拆分的前提是這些小任務可以平行計算,可以提高並行度。彼此間幾乎沒有依賴關係。

reduce負責「合」,即對map階段的結果進行全域性彙總。

這兩個階段合起來正是mapreduce思想的體現。

乙個block塊對應乙個maptask

在mapreduce當中沒有block塊的概念,每乙個maptask處理的一部分資料都叫做乙個切片,預設的乙個切片對應乙個block塊的大小

可以理解為乙個block塊對應乙個maptask

mapreduce是乙個分布式運算程式的程式設計框架,核心功能是將使用者編寫的業務邏輯**和自帶預設元件整合成乙個完整的分布式運算程式,併發執行在hadoop集群上。

既然是做計算的框架,那麼表現形式就是有個輸入(input),mapreduce操作這個輸入(input),通過本身定義好的計算模型,得到乙個輸出(output)。

對許多開發者來說,自己完完全全實現乙個平行計算程式難度太大,而mapreduce就是一種簡化平行計算的程式設計模型,降低了開發並行應用的入門門檻。

hadoop mapreduce構思體現在如下的三個方面:

2.1、如何對付大資料處理:分而治之

對相互間不具有計算依賴關係的大資料,實現並行最自然的辦法就是採取分而治之的策略。平行計算的第乙個重要問題是如何劃分計算任務或者計算資料以便對劃分的子任務或資料塊同時進行計算。不可分拆的計算任務或相互間有依賴關係的資料無法進行平行計算!

2.2、構建抽象模型:map和reduce

mapreduce借鑑了函式式語言中的思想,用map和reduce兩個函式提供了高層的並行程式設計抽象模型。

map: 對一組資料元素進行某種重覆式的處理;

reduce: 對map的中間結果進行某種進一步的結果整理。

mapreduce中定義了如下的map和reduce兩個抽象的程式設計介面,由使用者去程式設計實現:

map: (k1; v1) → [(k2; v2)]

reduce: (k2; [v2]) → [(k3; v3)]

map和reduce為程式設計師提供了乙個清晰的操作介面抽象描述。通過以上兩個程式設計介面,大家可以看出mapreduce處理的資料型別是鍵值對。

2.3、統一構架,隱藏系統層細節

如何提供統一的計算框架,如果沒有統一封裝底層細節,那麼程式設計師則需要考慮諸如資料儲存、劃分、分發、結果收集、錯誤恢復等諸多細節;為此,mapreduce設計並提供了統一的計算框架,為程式設計師隱藏了絕大多數系統層面的處理細節。

mapreduce最大的亮點在於通過抽象模型和計算框架把需要做什麼(what need to do)與具體怎麼做(how to do)分開了,為程式設計師提供乙個抽象和高層的程式設計介面和框架。程式設計師僅需要關心其應用層的具體計算問題,僅需編寫少量的處理應用本身計算問題的程式**。如何具體完成這個平行計算任務所相關的諸多系統層細節被隱藏起來,交給計算框架去處理:從分布**的執行,到大到數千小到單個節點集群的自動排程使用。

Hadoop的分布式計算 MapReduce

什麼是mapreduce?你想數出一摞牌中有多少張黑桃。直觀方式是一張一張檢查並且數出有多少張是黑桃。mapreduce方法則是 1.給在座的所有玩家中分配這摞牌 2.讓每個玩家數自己手中的牌有幾張是黑桃,然後把這個數目匯報給你 3.你把所有玩家告訴你的數字加起來,得到最後的結論 1 mapredu...

MapReduce 分布式計算框架

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

分布式計算框架與分布式檔案系統

分布式計算框架與分布式檔案系統是兩個概念。分布式計算框架是用於處理大資料的一種模型,而分布式檔案系統可以用於大資料的儲存。對於如何處理大資料,計算機科學界有兩大方向 一是集中式計算,二是分布式計算。過去,分布式計算理論比較複雜,技術實現比較困難,因此集中式計算一直是主流解決方案。但2003年到200...