MapReduce

MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算

在進(jìn)行MapReduce計(jì)算任務(wù)的時(shí)候,任務(wù)被分為兩個(gè)階段:Map階段和Reduce階段。每個(gè)階段都是用鍵值對(duì)(key/value)形式作為輸入(input)和輸出(output)

MapReduce采用的是“分而治之”的策略,一個(gè)大規(guī)模數(shù)據(jù)集會(huì)被切分成許多獨(dú)立的分片,這些分片可以被多個(gè)Map任務(wù)并行處理

MapReduce框架采用Master/Slave架構(gòu),包括一個(gè)Master和多個(gè)Slave。Master上面運(yùn)行JobTracker,Slave上面運(yùn)行TaskTracker。

MapReduce主要由4個(gè)部分組成:

  1. Client
    用戶編寫的MapReduce程序通過Client提交到JobTracker端
    用戶可通過Client提供的一些接口查看作業(yè)運(yùn)行狀態(tài)
  2. JobTracker
    JobTracker負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度
    JobTracker 監(jiān)控所有TaskTracker與Job的健康狀況,一旦發(fā)現(xiàn)失敗,就將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點(diǎn)
    JobTracker 會(huì)跟蹤任務(wù)的執(zhí)行進(jìn)度、資源使用量等信息,并將這些信息告訴任務(wù)調(diào)度器,而調(diào)度器會(huì)在資源出現(xiàn)空閑時(shí),選擇合適的任務(wù)去使用這些資源
  3. TaskTracker
    TaskTracker 會(huì)周期性地通過“心跳”將本節(jié)點(diǎn)上資源的使用情況和任務(wù)的運(yùn)行進(jìn)度匯報(bào)給JobTracker,同時(shí)接收J(rèn)obTracker 發(fā)送過來的命令并執(zhí)行相應(yīng)的操作
    TaskTracker 使用“slot”等量劃分本節(jié)點(diǎn)上的資源量(CPU、內(nèi)存等)。一個(gè)Task 獲取到一個(gè)slot 后才有機(jī)會(huì)運(yùn)行,而Hadoop調(diào)度器的作用就是將各個(gè)TaskTracker上的空閑slot分配給Task使用。slot 分為Map slot 和Reduce slot 兩種,分別供MapTask 和Reduce Task 使用
  4. HDFS
    保存作業(yè)的數(shù)據(jù)、配置信息等等,最后的結(jié)果也是保存在HDFS上面

MapReduce基本架構(gòu):


4162886-22e98e6334639711.png

MapReduce運(yùn)行過程:


5959612-68cf8d92e2358294.png

MapReduce的計(jì)算流程:
Input Split --> Map --> Combiner(optional) --> Shuffle --> Reduce --> Output

20160419199999.jpg

Combine:作用是把同一個(gè)key的鍵值對(duì)合并在一起,combine函數(shù)把一個(gè)map函數(shù)產(chǎn)生<key,value>對(duì)合并成一個(gè)新的<key,value>對(duì),并將新的<key,value>作為輸入到reduce函數(shù)中

Partition:作用就是把這些數(shù)據(jù)歸類,主要在Shuffle過程中按照Key值將中間結(jié)果分成R份,其中每份都有一個(gè)Reduce去負(fù)責(zé),可以通過job.setPartitionerClass()方法進(jìn)行設(shè)置,默認(rèn)的使用hashPartitioner類

Shuffle:shuffle是map和reduce中間的過程,包含兩端的Combine和Partition

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MapReduce框架結(jié)構(gòu)## MapReduce是一個(gè)用于大規(guī)模數(shù)據(jù)處理的分布式計(jì)算模型MapReduce模型主...
    Bloo_m閱讀 3,941評(píng)論 0 4
  • 參考:hadoop 學(xué)習(xí)筆記:mapreduce框架詳解 [toc] 總結(jié) Mapreduce是一個(gè)計(jì)算框架,既然...
    小小少年Boy閱讀 896評(píng)論 0 12
  • 參考:hadoop 學(xué)習(xí)筆記:mapreduce框架詳解 [toc] 總結(jié) Mapreduce是一個(gè)計(jì)算框架,既然...
    小小少年Boy閱讀 1,218評(píng)論 0 4
  • https://wenku.baidu.com/view/929678ccf90f76c661371a87.htm...
    __0_0__閱讀 4,468評(píng)論 0 1
  • MapReduce是面向大數(shù)據(jù)并行處理的計(jì)算模型、框架和平臺(tái)。MapReduce是一個(gè)基于集群的高性能并行計(jì)算平臺(tái)...
    VVictoriaLee閱讀 474評(píng)論 0 1

友情鏈接更多精彩內(nèi)容