1.MapReduce原理篇編程
Mapreduce是一個分佈式運算程序的編程框架,是用戶開發「基於hadoop的數據分析應用」的核心框架;緩存
Mapreduce核心功能是將用戶編寫的業務邏輯代碼和自帶默認組件整合成一個完整的分佈式運算程序,併發運行併發
在一個hadoop集羣上框架
2.MapReduce程序結構: 分佈式
一個完整的mapreduce程序在分佈式運行時有三類實例進程:oop
一、MRAppMaster:負責整個程序的過程調度及狀態協調spa
二、MapTask:負責map階段的整個數據處理流程orm
三、ReduceTask:負責reduce階段的整個數據處理流程排序
3.MapReduce程序運行流程:進程
一、 一個mr程序啓動的時候,最早啓動的是MRAppMaster,MRAppMaster啓動後根據本次job的描述信息,計算出
須要的maptask實例數量,而後向集羣申請機器啓動相應數量的maptask進程
二、 maptask進程啓動以後,根據給定的數據切片範圍進行數據處理,主體流程爲:
a) 利用客戶指定的inputformat來獲取RecordReader讀取數據,造成輸入KV對
b) 將輸入KV對傳遞給客戶定義的map()方法,作邏輯運算,並將map()方法輸出的KV對收集到緩存
c) 將緩存中的KV對按照K分區排序後不斷溢寫到磁盤文件
三、 MRAppMaster監控到全部maptask進程任務完成以後,會根據客戶指定的參數啓動相應數量的reducetask進程,
並告知reducetask進程要處理的數據範圍(數據分區)
四、 Reducetask進程啓動以後,根據MRAppMaster告知的待處理數據所在位置,從若干臺maptask運行所在機器上
獲取到若干個maptask輸出結果文件,並在本地進行從新歸併排序,而後按照相同key的KV爲一個組,調用客戶定義的
reduce()方法進行邏輯運算,並收集運算輸出的結果KV,而後調用客戶指定的outputformat將結果數據輸出到外部存
儲