MapReduce:分布式計算系統(tǒng),hadoop的三大核心功能之一磨总。
MapReduce是面向大數(shù)據(jù)并行處理的計算模型嗦明、框架和平臺,它隱含了以下三層含義:
1)MapReduce是一個基于集群的高性能并行計算平臺(Cluster Infrastructure)蚪燕。它允許用市場上普通的商用服務(wù)器構(gòu)成一個包含數(shù)十娶牌、數(shù)百至數(shù)千個節(jié)點的分布和并行計算集群。
2)MapReduce是一個并行計算與運行軟件框架(Software Framework)馆纳。它提供了一個龐大但設(shè)計精良的并行計算軟件框架诗良,能自動完成計算任務(wù)的并行化處理,自動劃分計算數(shù)據(jù)和計算任務(wù)鲁驶,在集群節(jié)點上自動分配和執(zhí)行任務(wù)以及收集計算結(jié)果鉴裹,將數(shù)據(jù)分布存儲、數(shù)據(jù)通信、容錯處理等并行計算涉及到的很多系統(tǒng)底層的復(fù)雜細節(jié)交由系統(tǒng)負責處理径荔,大大減少了軟件開發(fā)人員的負擔督禽。
3)MapReduce是一個并行程序設(shè)計模型與方法(Programming Model & Methodology)。它借助于函數(shù)式程序設(shè)計語言Lisp的設(shè)計思想总处,提供了一種簡便的并行程序設(shè)計方法狈惫,用Map和Reduce兩個函數(shù)編程實現(xiàn)基本的并行計算任務(wù),提供了抽象的操作和并行編程接口鹦马,以簡單方便地完成大規(guī)模數(shù)據(jù)的編程和計算處理
由來:
MapReduce最早是由Google公司研究提出的一種面向大規(guī)模數(shù)據(jù)處理的并行計算模型和方法胧谈。Google公司設(shè)計MapReduce的初衷主要是為了解決其搜索引擎中大規(guī)模網(wǎng)頁數(shù)據(jù)的并行化處理。Google公司發(fā)明了MapReduce之后首先用其重新改寫了其搜索引擎中的Web文檔索引處理系統(tǒng)荸频。但由于MapReduce可以普遍應(yīng)用于很多大規(guī)模數(shù)據(jù)的計算問題菱肖,因此自發(fā)明MapReduce以后,Google公司內(nèi)部進一步將其廣泛應(yīng)用于很多大規(guī)模數(shù)據(jù)處理問題试溯。Google公司內(nèi)有上萬個各種不同的算法問題和程序都使用MapReduce進行處理蔑滓。
MapReduce實現(xiàn)案例圖示:
實現(xiàn)原理:
1> 通過map接口方法,把讀取文件塊的一行信息遇绞,再通過特定的符號键袱,對改行信息進行分割,把每個單詞作為以鍵值對的形式存入到上下文中摹闽,
單詞作為key蹄咖,value為1 ,每讀取一個單間進行一次寫入付鹿,然后再把相同的key的value以集合的形式傳入到reduce方法中進行計算
2> 通過reduce方法獲取到shuffle之后的數(shù)據(jù)澜汤,每次計算一個相同key的所有的value值,實現(xiàn)統(tǒng)計操作舵匾,然后再寫入到上下文輸入到文件中俊抵。